Skip to content

QQ Bot C2C: Media sending (image/file) returns 400 Bad Request #92246

Description

@VioletUniverse

Description

Sending images or files via QQ Bot C2C (private chat) fails with HTTP 400 Bad Request. Text-only messages work fine (200 OK).

Steps to Reproduce

  1. Configure QQ Bot with appId and clientSecret
  2. Send a message with media, buffer, or attachments parameter via the message tool
  3. Check gateway logs

Expected Behavior

Image/file should be delivered to the QQ C2C chat.

Actual Behavior

  • The message tool returns success (no error thrown)
  • But platformMessageIds is empty in the receipt
  • Gateway logs show: [qqbot:api] <<< Status: 400 Bad Request
  • Multiple attempts tried: media param, buffer (base64), attachments — all return 400
  • Pure text messages work normally (200 OK)

Log Evidence

[default] [qqbot:api] <<< Status: 400 Bad Request | TraceId: 6db8273c2c4e3eb936e2e4eb8218cd48
[default] [qqbot:api] <<< Status: 400 Bad Request | TraceId: 563af3169be2104176625935f0c23223
[default] [qqbot:api] <<< Status: 400 Bad Request | TraceId: d8795ef3689d1027a165507e96ddcd73

Environment

  • OpenClaw version: 2026.6.5
  • QQ Bot plugin: @openclaw/qqbot
  • Channel: C2C (private chat)
  • OS: Ubuntu x86_64
  • Node: v24.16.0

Suspected Cause

QQ Bot C2C API may require a specific media upload flow (upload → get file_info → reference in message) that is not being used when sending via the generic message tool.

Additional Notes

  • qqbot_channel_api tool only covers guild/channel endpoints, not C2C media upload
  • Group chat media sending not tested (only C2C)
  • The urlDirectUpload config option was tested but did not help

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Normal backlog priority with limited blast radius.clawsweeper:needs-live-reproClawSweeper needs live local, crabbox, or manual validation to confirm this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.issue-rating: 🐚 platinum hermitGood issue quality with a plausible reproduction path needing some confirmation.

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions