Skip to content

Fix: 修复群聊回复命令解析 - #222

Merged
yanyongyu merged 2 commits into
masterfrom
fix/qq-group-reply-mention
Aug 9, 2026
Merged

Fix: 修复群聊回复命令解析#222
yanyongyu merged 2 commits into
masterfrom
fix/qq-group-reply-mention

Conversation

@he0119

@he0119 he0119 commented Aug 5, 2026

Copy link
Copy Markdown
Member

原因

QQ 官方群聊在回复消息时会自动把被回复者的提及放在消息正文开头。开启群全量消息后,实际事件中适配器收到的是 MentionUser + 命令文本;同时,现有 _check_reply 没有按照引用索引识别真实引用元素,导致 Alconna 无法把后续文本解析为命令。

QQ 官方文档将 message_type=103 定义为引用消息,并通过 message_scene.ext 中的 ref_msg_idxmsg_elements[].msg_idx 关联被引用元素。本次修改据此解析引用消息,再结合真实事件 payload 清理 QQ 客户端自动添加的回复对象提及。

修改

  • 根据 message_type=103ref_msg_idx 精确匹配引用消息元素
  • 在确认是 QQ 自动添加的回复对象提及时,清理开头的提及和空白
  • 保留主动提及及回复机器人时的 to_me 行为
  • 使用脱敏真实事件补充 5 条回归测试,并增加 Python 3.10/3.14 测试工作流

官方文档参考

  • 群消息(全量模式):开启“接收所有消息”后推送 GROUP_MESSAGE_CREATE,字段与群 @ 机器人消息一致
  • 群 @ 机器人消息:说明 message_type=103message_scene.ext 中的 ref_msg_idx 以及 msg_elements[].msg_idx
  • 消息类型:QQ 消息类型与引用消息结构概览

验证

  • uv run --python 3.10 pytest
  • uv run --python 3.14 pytest
  • uv run pre-commit run --all-files

he0119 added 2 commits August 5, 2026 13:46
根据 ref_msg_idx 精确匹配引用消息元素,并清理 QQ 群聊回复中客户端自动添加的被回复者提及,避免命令前置 MentionUser 阻断解析。

补充脱敏真实事件回归测试及 Python 3.10、3.14 测试工作流。
@he0119
he0119 requested a review from RF-Tar-Railt August 5, 2026 06:02
@he0119
he0119 marked this pull request as ready for review August 6, 2026 02:48
@yanyongyu yanyongyu added the bug Something isn't working label Aug 9, 2026
@yanyongyu yanyongyu linked an issue Aug 9, 2026 that may be closed by this pull request
@yanyongyu yanyongyu changed the title fix(qq): 修复群聊回复命令解析 Fix: 修复群聊回复命令解析 Aug 9, 2026
@yanyongyu
yanyongyu merged commit 2c05da3 into master Aug 9, 2026
4 checks passed
@yanyongyu
yanyongyu deleted the fix/qq-group-reply-mention branch August 9, 2026 06:48
he0119 added a commit to he0119/CoolQBot that referenced this pull request Aug 9, 2026
## 说明

将 nonebot-adapter-qq 从 1.7.1 更新至 1.7.2,并同步 uv 锁文件。

本次更新主要引入上游已合并的群聊回复命令解析修复:QQ 全量群聊回复事件中的自动提及会被适配器正确清理,使后续文本可被 Alconna
识别为命令。1.7.2 还包含引用元素类型容错、群成员事件与权限、自定义 WebSocket Gateway URL 等更新。

- [nonebot-adapter-qq 1.7.2
更新日志](https://github.com/nonebot/adapter-qq/releases/tag/v1.7.2)
- [上游群聊回复命令解析修复 #222](nonebot/adapter-qq#222)

## 验证

- uv lock --check
- uv run pytest -n auto -q:400 passed
- uv run pre-commit run --all-files
- git diff --check
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Development

Successfully merging this pull request may close these issues.

MentionUser消息结构问题

2 participants