[Bug] QQ 官方机器人开启引用回复后,手机 QQ 在同一气泡内重复显示正文(v4.29.4)

オープン
#10,954 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
22/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
python
領域
backend

調査の方向性

The relevant setting is platform_settings.reply_with_quote, and the log line Prepare to send comes from the respond stage (respond.stage, around line 237). Start by checking whether the outgoing QQ official payload contains the body twice when quoting and mentioning are both enabled, and only then examine the client-side rendering. Done means you can state which layer produces the duplicate, with a trace or HTTP-level log to support it; the issue does not yet establish this, and it overlaps with #10650.

索引モデルが issue の本文から書いたものです。

説明

问题描述

使用 QQ 官方机器人适配器在 QQ 群中回复消息,开启「回复时引用发送人消息」(platform_settings.reply_with_quote)后,手机 QQ 会在同一个消息气泡内重复显示一遍完整回答,电脑 QQ 查看对应消息则正常,只显示一份回答。

手机端可见的结构大致为:

[引用用户提问]
回答正文
@提问者 回答正文(相同内容再次出现)

电脑端对应消息为:

[引用用户提问]
@提问者
回答正文(仅一份)

已通过实际排查将触发条件定位到「回复时引用发送人消息」选项。希望保留引用回复时,两端均只显示一份正文。

如何复现?
  1. 在 AstrBot 中接入 QQ 官方机器人(WebSocket),并在 QQ 群中使用。
  2. 在该机器人实际使用的配置中开启「回复时引用发送人消息」(reply_with_quote: true)。本次出现问题时同时开启了 reply_with_mention: true。
  3. 在群中发送 @机器人 你能做什么,等待机器人回复。
  4. 分别使用手机 QQ 和电脑 QQ 查看对应消息:手机端同一气泡内正文重复,电脑端正常。
AstrBot 版本

4.29.4(WebUI v4.29.4)

操作系统

Linux,x86_64,内核 5.10.134-19.1.al8.x86_64。

部署方式

Docker,Python 3.12.13。

使用的消息平台适配器

QQ 官方机器人(WebSocket),qq_official。

错误日志

诊断包中未见这次回复对应的异常堆栈。以下为相关 INFO 日志节选,用户昵称和 OpenID 已替换为占位符:

[2026-11-02 17:41:54.887] [Core] [INFO] [core.core_lifecycle:167]: AstrBot v4.29.4
[2026-11-02 17:48:08.950] [Core] [INFO] [respond.stage:237]: Prepare to send - <USER>/<USER_OPENID>: [引用消息] [At:<USER_OPENID>]
我可以解答 BigBirdTouch 电脑端版与单机版的使用操作和故障排查问题,包括连接与硬件识别排查、软件及按键映射配置、投屏与光标设置、高级版激活以及常见游戏适配问题。遇到具体问题时直接发送现象或报错,我会为你提供排查步骤。

这条 Prepare to send 日志中的正文只有一份。当前日志级别为 INFO,未开启 trace,也没有最终 QQ HTTP 请求/响应记录,因此上述日志不能证明底层接口调用次数或直接确定重复发生在哪一层。

辅助信息

相关配置节选:

{
  "platform_settings": {
    "reply_with_quote": true,
    "reply_with_mention": true,
    "segmented_reply": {
      "enable": false
    }
  },
  "provider_settings": {
    "streaming_response": false
  }
}

诊断包显示加载了内置插件 astrbot、builtin_commands,以及本地插件 astrbot_plugin_bot_manager 1.0.0。尚未提供禁用全部第三方插件后的复测结果。

与已有报告的关系及尚待确认的信息
  • 与 #10650 描述的现象一致;该报告的环境为 v4.29.1,本次环境为 v4.29.4。
  • 已看到 #10650 中关于「升级手机 QQ 客户端可以解决」的反馈。本次尚未提供手机 QQ 的系统类型、具体版本,以及升级客户端后的复测结果,不能据此认定是 AstrBot 的回归问题或断言最新手机 QQ 仍然受影响。
  • 电脑 QQ 的具体版本也尚未记录。
  • 现阶段确认的是引用回复选项与手机端重复显示之间的关联,具体根因仍需结合客户端版本和发送载荷进一步确认。
  • 原始诊断包包含凭据及无关聊天记录,未公开上传;以上仅保留与问题相关的配置和脱敏日志。
主要言語
Python
スター
46.4k
フォーク
3.4k
平均マージ
1日 11時間
マージ済み PR(30日)
120

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

AstrBotDevs/AstrBot のほかの issue

AstrBotDevs/AstrBot の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。