fix: pass msg_id in QQ C2C reply to avoid proactive message permission error

QQ's bot API requires a msg_id (original inbound message ID) to send a
passive reply. Without it the request is treated as a proactive message
and fails with error 40034102 (无权限). The message_id was already stored
in InboundMessage.metadata and forwarded to OutboundMessage, but was never
read in send().

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
GabrielWithTina
2026-02-28 09:44:28 +08:00
parent a4d95fd064
commit 8842fb2b4d

View File

@@ -100,10 +100,12 @@ class QQChannel(BaseChannel):
logger.warning("QQ client not initialized")
return
try:
msg_id = msg.metadata.get("message_id")
await self._client.api.post_c2c_message(
openid=msg.chat_id,
msg_type=0,
content=msg.content,
msg_id=msg_id,
)
except Exception as e:
logger.error("Error sending QQ message: {}", e)