Skip to content

Commit 1f05430

Browse files
2ndelementAstrBot Local
authored andcommitted
fix(qqofficial): remove msg_id from video/file media payloads in send_by_session
QQ API rejects msg_id on proactive media (video/file, msg_type=7) messages sent via the tool-call path, returning "请求参数msg_id无效或越权". The msg_id passive-reply credential is consumed by the first send and cannot be reused for subsequent media uploads in the same session. Remove msg_id from the payload after setting msg_type=7 for video and file sends, for both FRIEND_MESSAGE (C2C) and GROUP_MESSAGE paths.
1 parent 1996e30 commit 1f05430

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

astrbot/core/platform/sources/qqofficial/qqofficial_platform_adapter.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,7 @@ async def _send_by_session_common(
212212
if media:
213213
payload["media"] = media
214214
payload["msg_type"] = 7
215+
payload.pop("msg_id", None)
215216
if file_source:
216217
media = await QQOfficialMessageEvent.upload_group_and_c2c_media(
217218
send_helper, # type: ignore
@@ -223,6 +224,7 @@ async def _send_by_session_common(
223224
if media:
224225
payload["media"] = media
225226
payload["msg_type"] = 7
227+
payload.pop("msg_id", None)
226228
ret = await self.client.api.post_group_message(
227229
group_openid=session.session_id,
228230
**payload,
@@ -266,6 +268,9 @@ async def _send_by_session_common(
266268
if media:
267269
payload["media"] = media
268270
payload["msg_type"] = 7
271+
# QQ API rejects msg_id for media (video/file) messages sent
272+
# via the proactive tool-call path; remove it to avoid 越权 error.
273+
payload.pop("msg_id", None)
269274
if file_source:
270275
media = await QQOfficialMessageEvent.upload_group_and_c2c_media(
271276
send_helper, # type: ignore
@@ -277,6 +282,7 @@ async def _send_by_session_common(
277282
if media:
278283
payload["media"] = media
279284
payload["msg_type"] = 7
285+
payload.pop("msg_id", None)
280286

281287
ret = await QQOfficialMessageEvent.post_c2c_message(
282288
send_helper, # type: ignore

0 commit comments

Comments
 (0)