From 30ae18a8f07976f559f721586b5afe0434a10497 Mon Sep 17 00:00:00 2001 From: letr <123731298+letr007@users.noreply.github.com> Date: Wed, 17 Jun 2026 19:11:48 +0800 Subject: [PATCH] feat(qqofficial): support group message create type (#8838) * feat(qqofficial): support group message create * chore: remove temporary qq official capture script * feat(qqofficial): allow ws segmented replies * fix(qqofficial): guard missing group mentions * feat(qqofficial): enhance group message handling with debug logging and sender username * feat(qqofficial): add recommended group chat settings and update bot creation instructions * feat(qqofficial): enhance error handling for QQ Official API message sending --------- Co-authored-by: Soulter <905617992@qq.com> --- astrbot/core/pipeline/respond/stage.py | 2 +- .../core/pipeline/result_decorate/stage.py | 2 +- .../qqofficial/qqofficial_message_event.py | 26 +- .../qqofficial/qqofficial_platform_adapter.py | 120 +++++- .../qqofficial_webhook/qo_webhook_adapter.py | 20 +- .../qqofficial_webhook/qo_webhook_server.py | 8 +- docs/en/platform/qqofficial/webhook.md | 8 + docs/en/platform/qqofficial/websockets.md | 56 ++- .../qqofficial-group-recommended-config.png | Bin 0 -> 119127 bytes docs/zh/platform/qqofficial/webhook.md | 8 + docs/zh/platform/qqofficial/websockets.md | 55 ++- tests/test_qqofficial_group_message_create.py | 372 ++++++++++++++++++ 12 files changed, 621 insertions(+), 56 deletions(-) create mode 100644 docs/public/qqofficial-group-recommended-config.png create mode 100644 tests/test_qqofficial_group_message_create.py diff --git a/astrbot/core/pipeline/respond/stage.py b/astrbot/core/pipeline/respond/stage.py index 604f1ded0..014545690 100644 --- a/astrbot/core/pipeline/respond/stage.py +++ b/astrbot/core/pipeline/respond/stage.py @@ -138,7 +138,7 @@ class RespondStage(Stage): return False if event.get_platform_name() in [ - "qq_official", + "qq_official_webhook", "weixin_official_account", "dingtalk", ]: diff --git a/astrbot/core/pipeline/result_decorate/stage.py b/astrbot/core/pipeline/result_decorate/stage.py index afb8a6184..5956c8b5e 100644 --- a/astrbot/core/pipeline/result_decorate/stage.py +++ b/astrbot/core/pipeline/result_decorate/stage.py @@ -203,7 +203,7 @@ class ResultDecorateStage(Stage): # 分段回复 if self.enable_segmented_reply and event.get_platform_name() not in [ - "qq_official", + "qq_official_webhook", "weixin_official_account", "dingtalk", ]: diff --git a/astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py b/astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py index 15d7b4159..68a93b09b 100644 --- a/astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py +++ b/astrbot/core/platform/sources/qqofficial/qqofficial_message_event.py @@ -65,6 +65,14 @@ _qqofficial_retry = retry( reraise=True, ) +_QQOFFICIAL_SEND_API_ERRORS = ( + botpy.errors.ForbiddenError, + botpy.errors.MethodNotAllowedError, + botpy.errors.NotFoundError, + botpy.errors.SequenceNumberError, + botpy.errors.ServerError, +) + class QQOfficialMessageEvent(AstrMessageEvent): MARKDOWN_NOT_ALLOWED_ERROR = "不允许发送原生 markdown" @@ -482,7 +490,21 @@ class QQOfficialMessageEvent(AstrMessageEvent): ): try: return await send_func(payload) - except botpy.errors.ServerError as err: + except _QQOFFICIAL_SEND_API_ERRORS as err: + logger.info("[QQOfficial] 回复消息失败: %s, 尝试使用主动发送接口。", err) + if payload.get("msg_id"): + fallback_payload = payload.copy() + try: + ret = await send_func(fallback_payload) + logger.info("[QQOfficial] 使用主动发送接口发送成功。") + return ret + except _QQOFFICIAL_SEND_API_ERRORS as fallback_err: + err = fallback_err + payload = fallback_payload + + if not isinstance(err, botpy.errors.ServerError): + raise + # QQ 流式 markdown 分片校验:内容必须以换行结尾。 # 某些边界场景服务端仍可能判定失败,这里做一次修正重试。 if stream and self.STREAM_MARKDOWN_NEWLINE_ERROR in str(err): @@ -649,6 +671,8 @@ class QQOfficialMessageEvent(AstrMessageEvent): ) -> message.Message | None: payload = locals() payload.pop("self", None) + if payload.get("msg_id") is None: + payload.pop("msg_id", None) # QQ API does not accept stream.id=None; remove it when not yet assigned if "stream" in payload and payload["stream"] is not None: stream_data = dict(payload["stream"]) diff --git a/astrbot/core/platform/sources/qqofficial/qqofficial_platform_adapter.py b/astrbot/core/platform/sources/qqofficial/qqofficial_platform_adapter.py index 5d71ce5af..38e88a4ba 100644 --- a/astrbot/core/platform/sources/qqofficial/qqofficial_platform_adapter.py +++ b/astrbot/core/platform/sources/qqofficial/qqofficial_platform_adapter.py @@ -12,6 +12,7 @@ from typing import Any, cast import botpy import botpy.message from botpy import Client +from botpy.connection import ConnectionState from botpy.gateway import BotWebSocket from astrbot import logger @@ -36,6 +37,39 @@ for handler in logging.root.handlers[:]: logging.root.removeHandler(handler) +class PatchedGroupMessage(botpy.message.GroupMessage): + class _User: + def __init__(self, data: dict[str, Any]) -> None: + self.id = data.get("id", None) + self.username = data.get("username", None) + self.bot = data.get("bot", None) + self.avatar = data.get("avatar", None) + self.member_openid = data.get("member_openid", None) + self.user_openid = data.get("user_openid", None) + self.is_you = data.get("is_you", None) + + def __repr__(self) -> str: + return str(self.__dict__) + + +def _ensure_group_message_create_parser() -> None: + """Register the missing qq-botpy parser for GROUP_MESSAGE_CREATE.""" + + if hasattr(ConnectionState, "parse_group_message_create"): + return + + def parse_group_message_create(self, payload: dict[str, Any]) -> None: + group_message = PatchedGroupMessage( + self.api, + payload.get("id", None), + payload.get("d", {}), + ) + logger.debug("[QQOfficial] Received group message: %s", group_message) + self._dispatch("group_message_create", group_message) + + setattr(ConnectionState, "parse_group_message_create", parse_group_message_create) + + class ManagedBotWebSocket(BotWebSocket): def __init__(self, session, connection: Any, client: botClient): super().__init__(session, connection) @@ -70,6 +104,19 @@ class botClient(Client): # 收到群消息 async def on_group_at_message_create( self, message: botpy.message.GroupMessage + ) -> None: + abm = await QQOfficialPlatformAdapter._parse_from_qqofficial( + message, + MessageType.GROUP_MESSAGE, + force_group_mention=True, + ) + abm.group_id = cast(str, message.group_openid) + abm.session_id = abm.group_id + self.platform.remember_session_scene(abm.session_id, "group") + self._commit(abm) + + async def on_group_message_create( + self, message: botpy.message.GroupMessage ) -> None: abm = await QQOfficialPlatformAdapter._parse_from_qqofficial( message, @@ -176,8 +223,11 @@ class QQOfficialPlatformAdapter(Platform): self.client.set_platform(self) + _ensure_group_message_create_parser() + self._session_last_message_id: dict[str, str] = {} self._session_scene: dict[str, str] = {} + self._allow_group_proactive_send = True self.test_mode = os.environ.get("TEST_MODE", "off") == "on" @@ -220,21 +270,32 @@ class QQOfficialPlatformAdapter(Platform): ): return - # 私聊主动推送不需要 msg_id,见 https://github.com/AstrBotDevs/AstrBot/issues/7904 + # 主动推送不需要 msg_id,见 https://github.com/AstrBotDevs/AstrBot/issues/7904 msg_id = self._session_last_message_id.get(session.session_id) - if not msg_id and session.message_type != MessageType.FRIEND_MESSAGE: + scene = self._session_scene.get(session.session_id) + allow_group_proactive_send = ( + session.message_type == MessageType.GROUP_MESSAGE + and scene == "group" + and getattr(self, "_allow_group_proactive_send", False) + ) + if ( + not msg_id + and session.message_type != MessageType.FRIEND_MESSAGE + and not allow_group_proactive_send + ): logger.warning( "[QQOfficial] No cached msg_id for session: %s, skip send_by_session", session.session_id, ) return - payload: dict[str, Any] = {"content": plain_text, "msg_id": msg_id} + payload: dict[str, Any] = {"content": plain_text} + if msg_id and not allow_group_proactive_send: + payload["msg_id"] = msg_id ret: Any = None send_helper = SimpleNamespace(bot=self.client) if session.message_type == MessageType.GROUP_MESSAGE: - scene = self._session_scene.get(session.session_id) if scene == "group": payload["msg_seq"] = random.randint(1, 10000) if image_base64: @@ -537,6 +598,7 @@ class QQOfficialPlatformAdapter(Platform): | botpy.message.DirectMessage | botpy.message.C2CMessage, message_type: MessageType, + force_group_mention: bool = False, ) -> AstrBotMessage: abm = AstrBotMessage() abm.type = message_type @@ -551,16 +613,47 @@ class QQOfficialPlatformAdapter(Platform): botpy.message.C2CMessage, ): if isinstance(message, botpy.message.GroupMessage): - abm.sender = MessageMember(message.author.member_openid, "") + abm.sender = MessageMember( + message.author.member_openid, + getattr(message.author, "username", "") or "", + ) abm.group_id = message.group_openid + bot_mentions = [ + mention + for mention in (getattr(message, "mentions", None) or []) + if getattr(mention, "is_you", False) is True + and getattr(mention, "id", None) is not None + ] + bot_mention_ids = [str(mention.id) for mention in bot_mentions] + group_mentioned = bool(bot_mention_ids) or force_group_mention + plain_content_raw = message.content or "" + for mention_id in bot_mention_ids: + plain_content_raw = plain_content_raw.replace( + f"<@{mention_id}>", + "", + ).replace( + f"<@!{mention_id}>", + "", + ) + abm.message_str = QQOfficialPlatformAdapter._parse_face_message( + plain_content_raw.strip() + ) + abm.self_id = bot_mention_ids[0] if bot_mention_ids else "qq_official" + if group_mentioned: + mention_name = ( + getattr(bot_mentions[0], "username", "") if bot_mentions else "" + ) + msg.append(At(qq=abm.self_id, name=mention_name)) else: - abm.sender = MessageMember(message.author.user_openid, "") - # Parse face messages to readable text - abm.message_str = QQOfficialPlatformAdapter._parse_face_message( - message.content.strip() - ) - abm.self_id = "unknown_selfid" - msg.append(At(qq="qq_official")) + abm.sender = MessageMember( + message.author.user_openid, + getattr(message.author, "username", "") or "", + ) + abm.message_str = QQOfficialPlatformAdapter._parse_face_message( + (message.content or "").strip() + ) + abm.self_id = "unknown_selfid" + msg.append(At(qq="qq_official")) msg.append(Plain(abm.message_str)) await QQOfficialPlatformAdapter._append_attachments( msg, message.attachments @@ -599,7 +692,8 @@ class QQOfficialPlatformAdapter(Platform): abm.group_id = message.channel_id else: raise ValueError(f"Unknown message type: {message_type}") - abm.self_id = "qq_official" + if not abm.self_id: + abm.self_id = "qq_official" return abm def run(self): diff --git a/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_adapter.py b/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_adapter.py index a0f518c44..1a90f4ec9 100644 --- a/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_adapter.py +++ b/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_adapter.py @@ -13,7 +13,10 @@ from astrbot.core.platform.astr_message_event import MessageSesion from astrbot.core.utils.webhook_utils import log_webhook_info from ...register import register_platform_adapter -from ..qqofficial.qqofficial_platform_adapter import QQOfficialPlatformAdapter +from ..qqofficial.qqofficial_platform_adapter import ( + QQOfficialPlatformAdapter, + _ensure_group_message_create_parser, +) from .qo_webhook_event import QQOfficialWebhookMessageEvent from .qo_webhook_server import QQOfficialWebhook @@ -30,6 +33,19 @@ class botClient(Client): # 收到群消息 async def on_group_at_message_create( self, message: botpy.message.GroupMessage + ) -> None: + abm = await QQOfficialPlatformAdapter._parse_from_qqofficial( + message, + MessageType.GROUP_MESSAGE, + force_group_mention=True, + ) + abm.group_id = cast(str, message.group_openid) + abm.session_id = abm.group_id + self.platform.remember_session_scene(abm.session_id, "group") + self._commit(abm) + + async def on_group_message_create( + self, message: botpy.message.GroupMessage ) -> None: abm = await QQOfficialPlatformAdapter._parse_from_qqofficial( message, @@ -103,9 +119,11 @@ class QQOfficialWebhookPlatformAdapter(Platform): timeout=20, ) self.client.set_platform(self) + _ensure_group_message_create_parser() self.webhook_helper = None self._session_last_message_id: dict[str, str] = {} self._session_scene: dict[str, str] = {} + self._allow_group_proactive_send = False async def send_by_session( self, diff --git a/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py b/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py index 2c9f6caba..38ad45b56 100644 --- a/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py +++ b/astrbot/core/platform/sources/qqofficial_webhook/qo_webhook_server.py @@ -12,6 +12,8 @@ from cryptography.hazmat.primitives.asymmetric import ed25519 from astrbot.api import logger from astrbot.core.platform.webhook_server import FastAPIWebhookServer +from ..qqofficial.qqofficial_platform_adapter import _ensure_group_message_create_parser + # remove logger handler for handler in logging.root.handlers[:]: logging.root.removeHandler(handler) @@ -120,6 +122,7 @@ class QQOfficialWebhook: def _setup_connection(self) -> None: if self._connection is not None: return + _ensure_group_message_create_parser() self.client.api = self.api self.client.http = self.http @@ -163,7 +166,7 @@ class QQOfficialWebhook: """内部服务器的回调入口""" return await self.handle_callback(request) - async def handle_callback(self, request) -> dict: + async def handle_callback(self, request) -> dict | tuple[dict[str, str], int]: """处理 webhook 回调,可被统一 webhook 入口复用 Args: @@ -226,6 +229,7 @@ class QQOfficialWebhook: "creating parser connection lazily.", ) self._setup_connection() + connection = cast(ConnectionSession, self._connection) # Extract extra fields from raw payload before botpy parses and discards them if data: @@ -240,7 +244,7 @@ class QQOfficialWebhook: if extra: self._extra_data_cache[msg_id] = extra try: - func = self._connection.parser[event] + func = connection.parser[event] except KeyError: logger.error("_parser unknown event %s.", event) if data: diff --git a/docs/en/platform/qqofficial/webhook.md b/docs/en/platform/qqofficial/webhook.md index ebd136ee4..23bff4679 100644 --- a/docs/en/platform/qqofficial/webhook.md +++ b/docs/en/platform/qqofficial/webhook.md @@ -37,6 +37,14 @@ Then configure QQ groups, private chat QQ accounts, and QQ channels as needed. ![image](https://files.astrbot.app/docs/source/images/qqofficial/image-1.png) +## Recommended Group Chat Settings + +In mobile QQ group settings, open the bot settings page. We recommend setting `Messages the bot can access` to `All group messages`, and enabling `Allow the bot to proactively speak in the group`. + +With this configuration, the bot can receive full group messages and proactively push messages to the group, such as scheduled task notifications and plugin notifications. + +![QQ Official Bot recommended group chat settings](/qqofficial-group-recommended-config.png) + ## Get `appid` and `secret` After adding the bot where you need it, open `Development -> Development Settings`, then copy `appid` and `secret`. diff --git a/docs/en/platform/qqofficial/websockets.md b/docs/en/platform/qqofficial/websockets.md index 9b64576c3..7aed3d3b3 100644 --- a/docs/en/platform/qqofficial/websockets.md +++ b/docs/en/platform/qqofficial/websockets.md @@ -14,26 +14,37 @@ Proactive message push: Supported. -## Quick Deployment Steps +## Create a QQ Bot in AstrBot with One-click QR Setup (Recommended) -> Updated: `2026/03/06`. This method only supports `private chat`. +### Setup Flow -1. Open [QQ Open Platform](https://q.qq.com/qqbot/openclaw/). Register an account if you don't have one. -2. Click the `Create Bot` button on the right. -3. Obtain your `AppID` and `AppSecret`. -4. In AstrBot WebUI, click `Bots` in the left sidebar, then click `+ Create Bot`, select `QQ Official Bot (WebSocket)`, paste the `AppID` and `AppSecret` into the form, click `Enable`, then click `Save`. +1. In AstrBot WebUI, click `Bots` in the left sidebar, then click `+ Create Bot`. +2. Select `QQ Official Bot (WebSocket)`. +3. Under `Choose setup method`, select `One-click QR setup`, click start, then scan the QR code with mobile QQ. +4. After you confirm the QR binding, AstrBot automatically fills in `AppID` and `AppSecret`. Make sure `Enable` is checked, then click `Save`. 5. Back on the QQ Open Platform page, click `Scan QR Code to Chat` next to your bot, then scan with your mobile QQ to start chatting. -To use the bot in group chats, refer to the `Allow Bot in Channel / Group / Private Chat` section below. +### Use in Group Chats ---- +#### Add to a Group Chat -## Apply for a Bot +Open the created QQ bot profile page (mobile QQ -> Contacts -> Bots tab). You can find `Add to group chat` near the bottom. Currently, the bot can only be added to groups where you are the group owner. + +#### Set Message Access Scope and Proactive Speaking + +In mobile QQ group settings, open the bot settings page. We recommend setting `Messages the bot can access` to `All group messages`, and enabling `Allow the bot to proactively speak in the group`. + +With this configuration, the bot can receive full group messages and proactively push messages to the group, such as scheduled task notifications and plugin notifications. + +![QQ Official Bot recommended group chat settings](/qqofficial-group-recommended-config.png) + +## Manually Apply for a QQ Bot (Not Recommended) + +### Apply for a Bot > [!WARNING] > 1. QQ Official Bot currently requires an IP whitelist. > 2. It supports group chat, private chat, channel chat, and channel private chat. -> 3. Tencent is phasing out Websockets access, so this method is no longer recommended. Please use [Webhook](/en/platform/qqofficial/webhook) instead. Open [QQ Official Bot](https://q.qq.com) and sign in. @@ -43,7 +54,7 @@ Open the created bot to enter its management page: ![image](https://files.astrbot.app/docs/source/images/qqofficial/image.png) -## Allow Bot in Channel / Group / Private Chat +### Allow Bot in Channel / Group / Private Chat Open `Sandbox Configuration` to set a sandbox channel / QQ group / QQ private chat (up to 20 members). @@ -51,11 +62,13 @@ Then configure QQ groups, private chat QQ accounts, and QQ channels as needed. ![image](https://files.astrbot.app/docs/source/images/qqofficial/image-1.png) -## Get `appid` and `secret` +### Get `appid` and `secret` After adding the bot where you need it, open `Development -> Development Settings`, then copy `appid` and `secret`. -## Add IP Whitelist +If you use AstrBot WebUI's `One-click QR setup`, you can skip this step. AstrBot fills in `appid` and `secret` automatically after QR binding succeeds. + +### Add IP Whitelist Open `Development -> Development Settings`, find IP whitelist, and add your server IP. @@ -66,22 +79,27 @@ Open `Development -> Development Settings`, find IP whitelist, and add your serv > > In NAT environments without a public IP, the observed IP may change depending on your carrier. Use proxy/tunnel if needed. -## Configure in AstrBot +### Configure in AstrBot 1. Open AstrBot Dashboard. 2. Click `Bots` in the left sidebar. 3. Click `+ Create Bot`. 4. Select `qq_official`. -Fill in: +Recommended: use `One-click QR setup`. + +1. Under `Choose setup method`, select `One-click QR setup`. +2. Click start, then scan and confirm the QR code with mobile QQ. +3. Wait until the page shows binding success. AstrBot fills in `appid` and `secret` automatically. +4. Adjust `ID`, `Enable group/C2C message list`, `Enable guild direct message`, and other options as needed, then click `Save`. + +If QR setup is unavailable, choose `Manual setup` and fill in: - ID (`id`): any unique identifier. - Enable (`enable`): checked. - `appid`: from QQ Official Bot platform. - `secret`: from QQ Official Bot platform. +- Enable group/C2C message list (`enable_group_c2c`): keep enabled if you need QQ message-list private chat. +- Enable guild direct message (`enable_guild_direct_message`): keep enabled if you need guild direct messages. Click `Save`. - -## Done - -AstrBot should now be connected. Send `/help` to the bot in QQ private chat to verify. diff --git a/docs/public/qqofficial-group-recommended-config.png b/docs/public/qqofficial-group-recommended-config.png new file mode 100644 index 0000000000000000000000000000000000000000..1347933a25458dac11482543727d8f009f8476a4 GIT binary patch literal 119127 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 更新自: `2026/03/06`。该方法仅支持 `私聊`。 +### 配置流程 -1. 打开 [QQ 开放平台](https://q.qq.com/qqbot/openclaw/)。如果没注册,需要先注册。 -2. 点击右侧 `创建机器人` 按钮。 -3. 获取 `AppID` 和 `AppSecret`。 -4. 进入 AstrBot 的 WebUI,点击左边栏 `机器人`,然后在右边的界面中,点击 `+ 创建机器人`,选择 `QQ 官方机器人(WebSocket)`,将之前得到的 `AppID` 和 `AppSecret` 复制到这里的表单中,然后 `启用`,然后点击保存。 +1. 进入 AstrBot 的 WebUI,点击左边栏 `机器人`,然后点击 `+ 创建机器人`。 +2. 选择 `QQ 官方机器人(WebSocket)`。 +3. 在 `选择创建方式` 中选择 `扫码一键创建`,点击开始创建后,用手机 QQ 扫描页面中的二维码。 +4. 扫码确认后,AstrBot 会自动写入 `AppID` 和 `AppSecret`。确认 `启用` 已勾选,然后点击 `保存`。 5. 回到 QQ 开放平台页面,点击机器人右边的 `扫码聊天`。用手机 QQ 扫码即可聊天。 -如果要在群聊中使用,参考下面文档的 `允许机器人加入频道/群/私聊` 一节。 +### 在群聊中使用 ---- +#### 添加到群聊 -## 申请一个机器人 +进入创建的 QQ 机器人的资料页(手机QQ -> 联系人 -> 机器人页签),在下方可以找到 “添加到群聊”。目前只能添加到自己为群主的群聊。 + +#### 设置机器人可获取的群聊消息范围和主动发言 + +在手机 QQ 的群聊设置中打开机器人设置,推荐将 `机器人可获取的群聊消息范围` 设置为 `获取群内全部消息`,并开启 `机器人主动在群聊内发言`。 + +这样机器人可以接收群聊全量消息,也可以在群聊中主动推送消息,例如定时任务推送、插件主动通知等。 + +![QQ 官方机器人推荐群聊配置](/qqofficial-group-recommended-config.png) + +## 手动申请 QQ 机器人(不推荐) + +### 申请一个机器人 > [!WARNING] > @@ -44,7 +56,7 @@ ![image](https://files.astrbot.app/docs/source/images/qqofficial/image.png) -## 允许机器人加入频道/群/私聊 +### 允许机器人加入频道/群/私聊 点击`沙箱配置`,这允许你立即设置一个沙箱频道/QQ群/QQ私聊,用于拉入机器人(需要小于等于20个人)。 @@ -52,13 +64,15 @@ ![image](https://files.astrbot.app/docs/source/images/qqofficial/image-1.png) -## 获取 appid、secret +### 获取 appid、secret 添加机器人到你想用的地方后。 点击 `开发->开发设置`,找到 appid、secret。复制并保存它们。 -## 添加 IP 白名单(可选) +如果你使用 AstrBot WebUI 的 `扫码一键创建`,这一步可以跳过。扫码绑定成功后,AstrBot 会自动填入 `appid` 和 `secret`。 + +### 添加 IP 白名单(可选) 点击 `开发->开发设置`,找到 IP 白名单。添加你的服务器 IP 地址。 @@ -69,22 +83,27 @@ > > 如果你在没有公网 IP 的环境下,你看到的 IP 是运营商 NAT 的 IP,这个 IP 根据你的运营商的情况可能会随时变化。如有必要,可以配置代理。 -## 在 AstrBot 配置 +### 在 AstrBot 配置 1. 进入 AstrBot 的管理面板 2. 点击左边栏 `机器人` 3. 然后在右边的界面中,点击 `+ 创建机器人` 4. 选择 `QQ 官方机器人(WebSocket)` -弹出的配置项填写: +推荐使用 `扫码一键创建`: + +1. 在 `选择创建方式` 中选择 `扫码一键创建`。 +2. 点击开始创建,用手机 QQ 扫描二维码并确认。 +3. 等待页面显示绑定成功。AstrBot 会自动填入 `appid` 和 `secret`。 +4. 根据需要调整 `ID`、`启用消息列表单聊`、`启用频道私聊` 等配置,然后点击 `保存`。 + +如果扫码不可用,也可以选择 `手动创建`。弹出的配置项填写: - ID(id):随意填写,用于区分不同的消息平台实例。 - 启用(enable): 勾选。 - appid: QQ 官方机器人中获取的 appid。 - secret: QQ 官方机器人中获取的 secret。 +- 启用消息列表单聊(enable_group_c2c): 如果需要通过 QQ 消息列表私聊机器人,保持开启。 +- 启用频道私聊(enable_guild_direct_message): 如果需要频道私聊,保持开启。 点击 `保存`。 - -## 🎉 大功告成 - -此时,你的 AstrBot 应该已经成功连接 QQ 官方接口。使用 `私聊` 的方式在 QQ 对机器人发送 `/help` 以检查是否连接成功。 diff --git a/tests/test_qqofficial_group_message_create.py b/tests/test_qqofficial_group_message_create.py new file mode 100644 index 000000000..67017369a --- /dev/null +++ b/tests/test_qqofficial_group_message_create.py @@ -0,0 +1,372 @@ +import asyncio +import re +from types import SimpleNamespace +from typing import Any, cast +from unittest.mock import AsyncMock + +import botpy +import botpy.message +import pytest +from botpy import ConnectionSession + +from astrbot.api.event import MessageChain +from astrbot.api.message_components import At, Plain +from astrbot.core.message.message_event_result import ( + MessageEventResult, + ResultContentType, +) +from astrbot.core.pipeline.respond.stage import RespondStage +from astrbot.core.pipeline.result_decorate.stage import ResultDecorateStage +from astrbot.core.platform.message_session import MessageSession +from astrbot.core.platform.message_type import MessageType +from astrbot.core.platform.sources.qqofficial.qqofficial_platform_adapter import ( + QQOfficialPlatformAdapter, + _ensure_group_message_create_parser, +) +from astrbot.core.platform.sources.qqofficial.qqofficial_platform_adapter import ( + botClient as QQOfficialBotClient, +) +from astrbot.core.platform.sources.qqofficial_webhook.qo_webhook_adapter import ( + QQOfficialWebhookPlatformAdapter, +) + + +def _make_group_payload( + *, + message_id: str = "msg-1", + content: str = "hello world", + mentions: list[dict] | None = None, + member_openid: str = "member-1", + group_openid: str = "group-1", +) -> dict: + return { + "id": f"event-{message_id}", + "d": { + "id": message_id, + "content": content, + "author": {"member_openid": member_openid}, + "group_openid": group_openid, + "mentions": mentions or [], + "attachments": [], + }, + } + + +def _dispatch_group_message(payload: dict) -> tuple[str, botpy.message.GroupMessage]: + dispatched: list[tuple[str, botpy.message.GroupMessage]] = [] + _ensure_group_message_create_parser() + connection = ConnectionSession( + max_async=1, + connect=lambda: None, + dispatch=lambda event, message: dispatched.append((event, message)), + loop=asyncio.get_event_loop(), + api=None, + ) + connection.parser["group_message_create"](payload) + return dispatched[0] + + +@pytest.mark.asyncio +async def test_group_message_create_parser_is_registered_and_dispatches_group_message(): + QQOfficialPlatformAdapter( + { + "id": "qq-official-test", + "appid": "123", + "secret": "secret", + "enable_group_c2c": True, + "enable_guild_direct_message": False, + }, + {}, + asyncio.Queue(), + ) + + event_name, message = _dispatch_group_message(_make_group_payload()) + + assert event_name == "group_message_create" + assert isinstance(message, botpy.message.GroupMessage) + assert message.group_openid == "group-1" + + +@pytest.mark.asyncio +async def test_parse_group_message_create_plain_message_has_no_at_component(): + _, message = _dispatch_group_message( + _make_group_payload(content="plain group message") + ) + + abm = await QQOfficialPlatformAdapter._parse_from_qqofficial( + message, + MessageType.GROUP_MESSAGE, + ) + + assert abm.type == MessageType.GROUP_MESSAGE + assert abm.sender.user_id == "member-1" + assert abm.group_id == "group-1" + assert abm.message_str == "plain group message" + assert not any(isinstance(component, At) for component in abm.message) + assert [ + component.text for component in abm.message if isinstance(component, Plain) + ] == ["plain group message"] + + +@pytest.mark.asyncio +async def test_parse_group_message_create_bot_mention_cleans_plain_text(): + _, message = _dispatch_group_message( + _make_group_payload( + content="<@!bot-123> hello there", + mentions=[{"id": "bot-123", "is_you": True}], + ) + ) + + abm = await QQOfficialPlatformAdapter._parse_from_qqofficial( + message, + MessageType.GROUP_MESSAGE, + ) + + assert isinstance(abm.message[0], At) + assert abm.message[0].qq == "bot-123" + assert abm.self_id == "bot-123" + assert isinstance(abm.message[1], Plain) + assert abm.message[1].text == "hello there" + assert abm.message_str == "hello there" + assert abm.sender.user_id == "member-1" + assert abm.group_id == "group-1" + + +@pytest.mark.asyncio +async def test_legacy_group_at_path_forces_bot_mention_when_mentions_missing(): + message = botpy.message.GroupMessage( + None, + "event-legacy", + _make_group_payload(content="legacy text", mentions=[])["d"], + ) + + abm = await QQOfficialPlatformAdapter._parse_from_qqofficial( + message, + MessageType.GROUP_MESSAGE, + force_group_mention=True, + ) + + assert isinstance(abm.message[0], At) + assert abm.message[0].qq == "qq_official" + assert abm.self_id == "qq_official" + assert isinstance(abm.message[1], Plain) + assert abm.message[1].text == "legacy text" + + +@pytest.mark.asyncio +async def test_group_message_create_handler_maps_group_session_and_scene(): + _, message = _dispatch_group_message(_make_group_payload()) + committed: list = [] + remembered_scenes: list[tuple[str, str]] = [] + remembered_ids: list[tuple[str, str]] = [] + + class PlatformStub: + def remember_session_scene(self, session_id: str, scene: str) -> None: + remembered_scenes.append((session_id, scene)) + + def remember_session_message_id(self, session_id: str, message_id: str) -> None: + remembered_ids.append((session_id, message_id)) + + def create_event(self, message_obj): + return message_obj + + def commit_event(self, event) -> None: + committed.append(event) + + client = QQOfficialBotClient( + intents=botpy.Intents(public_messages=True), + bot_log=False, + ) + client.set_platform(cast(Any, PlatformStub())) + + await client.on_group_message_create(message) + + assert remembered_scenes == [("group-1", "group")] + assert remembered_ids == [("group-1", "msg-1")] + assert committed[0].type == MessageType.GROUP_MESSAGE + assert committed[0].group_id == "group-1" + assert committed[0].session_id == "group-1" + + +@pytest.mark.asyncio +async def test_ws_group_send_by_session_without_cached_msg_id_omits_msg_id(): + adapter = QQOfficialPlatformAdapter( + { + "id": "qq-official-test", + "appid": "123", + "secret": "secret", + "enable_group_c2c": True, + "enable_guild_direct_message": False, + }, + {}, + asyncio.Queue(), + ) + adapter.client.api = SimpleNamespace( + post_group_message=AsyncMock(return_value={"id": "sent-1"}), + post_message=AsyncMock(), + ) + adapter._session_scene["group-1"] = "group" + + await adapter.send_by_session( + MessageSession("qq_official", MessageType.GROUP_MESSAGE, "group-1"), + MessageChain(chain=[Plain("proactive hello")]), + ) + + adapter.client.api.post_group_message.assert_awaited_once() + kwargs = adapter.client.api.post_group_message.await_args.kwargs + assert kwargs["group_openid"] == "group-1" + assert kwargs["content"] == "proactive hello" + assert "msg_id" not in kwargs + assert "msg_seq" in kwargs + assert adapter._session_last_message_id["group-1"] == "sent-1" + + +@pytest.mark.asyncio +async def test_ws_group_send_by_session_with_cached_msg_id_still_omits_msg_id(): + adapter = QQOfficialPlatformAdapter( + { + "id": "qq-official-test", + "appid": "123", + "secret": "secret", + "enable_group_c2c": True, + "enable_guild_direct_message": False, + }, + {}, + asyncio.Queue(), + ) + adapter.client.api = SimpleNamespace( + post_group_message=AsyncMock(return_value={"id": "sent-2"}), + post_message=AsyncMock(), + ) + adapter._session_scene["group-1"] = "group" + adapter._session_last_message_id["group-1"] = "stale-msg-id" + + await adapter.send_by_session( + MessageSession("qq_official", MessageType.GROUP_MESSAGE, "group-1"), + MessageChain(chain=[Plain("proactive with cache")]), + ) + + adapter.client.api.post_group_message.assert_awaited_once() + kwargs = adapter.client.api.post_group_message.await_args.kwargs + assert kwargs["group_openid"] == "group-1" + assert kwargs["content"] == "proactive with cache" + assert "msg_id" not in kwargs + assert "msg_seq" in kwargs + + +@pytest.mark.asyncio +async def test_webhook_group_send_by_session_without_cached_msg_id_skips_send(): + adapter = QQOfficialWebhookPlatformAdapter( + { + "id": "qq-official-webhook-test", + "appid": "123", + "secret": "secret", + }, + {}, + asyncio.Queue(), + ) + adapter.client.api = SimpleNamespace( + post_group_message=AsyncMock(return_value={"id": "sent-1"}), + post_message=AsyncMock(), + ) + adapter._session_scene["group-1"] = "group" + + await adapter.send_by_session( + MessageSession("qq_official_webhook", MessageType.GROUP_MESSAGE, "group-1"), + MessageChain(chain=[Plain("webhook proactive hello")]), + ) + + adapter.client.api.post_group_message.assert_not_awaited() + + +def test_qqofficial_ws_is_not_excluded_from_segmented_reply(): + stage = RespondStage() + stage.enable_seg = True + stage.only_llm_result = False + result = MessageEventResult(chain=[Plain("hello")]) + + event = SimpleNamespace( + get_result=lambda: result, + get_platform_name=lambda: "qq_official", + ) + + assert stage.is_seg_reply_required(cast(Any, event)) is True + + +def test_qqofficial_webhook_remains_excluded_from_segmented_reply(): + stage = RespondStage() + stage.enable_seg = True + stage.only_llm_result = False + result = MessageEventResult(chain=[Plain("hello")]) + + event = SimpleNamespace( + get_result=lambda: result, + get_platform_name=lambda: "qq_official_webhook", + ) + + assert stage.is_seg_reply_required(cast(Any, event)) is False + + +@pytest.mark.asyncio +async def test_result_decorate_segments_qqofficial_ws_plain_result(): + stage = ResultDecorateStage() + stage.reply_prefix = "" + stage.content_safe_check_reply = False + stage.enable_segmented_reply = True + stage.only_llm_result = False + stage.words_count_threshold = 100 + stage.split_mode = "words" + stage.split_words = ["。"] + stage.split_words_pattern = re.compile(r"(.*?(。)|.+$)", re.DOTALL) + stage.content_cleanup_rule = "" + stage.show_reasoning = False + stage.tts_trigger_probability = 0 + stage.reply_with_mention = False + stage.reply_with_quote = False + stage.forward_threshold = 1000 + setattr( + stage, + "ctx", + SimpleNamespace( + plugin_manager=SimpleNamespace( + context=SimpleNamespace(get_using_tts_provider=lambda _umo: None) + ), + astrbot_config={ + "provider_tts_settings": { + "enable": False, + "use_file_service": False, + "dual_output": False, + }, + "callback_api_base": "", + "t2i": False, + }, + ), + ) + result = MessageEventResult( + chain=[Plain("第一段。第二段。")], + result_content_type=ResultContentType.LLM_RESULT, + ) + + event = SimpleNamespace( + plugins_name=None, + unified_msg_origin="qq_official:GroupMessage:group-1", + get_result=lambda: result, + get_platform_name=lambda: "qq_official", + is_stopped=lambda: False, + get_extra=lambda *_args, **_kwargs: None, + ) + + processed = stage.process(cast(Any, event)) + if hasattr(processed, "__aiter__"): + async for _ in cast(Any, processed): + pass + else: + yielded = await cast(Any, processed) + if yielded is not None: + async for _ in cast(Any, yielded): + pass + + assert [comp.text for comp in result.chain if isinstance(comp, Plain)] == [ + "第一段", + "第二段", + ]