From 6165c36159bbeb3e3be67df8a6a4f3f8d9cb3612 Mon Sep 17 00:00:00 2001 From: SXP-Simon Date: Sun, 2 Nov 2025 16:53:57 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=20=E8=87=AA=E5=8A=A8=E5=88=86=E6=9E=90?= =?UTF-8?q?=E5=99=A8=E8=8E=B7=E5=8F=96=E7=BE=A4=E8=81=8A=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/message_handler.py | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/src/core/message_handler.py b/src/core/message_handler.py index cd77fd2..f3218d0 100644 --- a/src/core/message_handler.py +++ b/src/core/message_handler.py @@ -75,15 +75,40 @@ class MessageHandler: while len(messages) < max_messages and query_rounds < max_rounds: try: + # 构造请求参数 payloads = { - "group_id": group_id, - "message_seq": message_seq, + "group_id": int(group_id) if group_id.isdigit() else group_id, "count": 200, - "reverseOrder": True, } + + # 添加 message_seq(如果不是第一轮) + if message_seq: + payloads["message_seq"] = message_seq - - result = await bot_instance.call_action("get_group_msg_history", **payloads) + # 尝试调用 API + result = None + api_error = None + + if hasattr(bot_instance, 'call_action'): + try: + # aiocqhttp (CQHttp) 方式 + result = await bot_instance.call_action("get_group_msg_history", **payloads) + except Exception as api_err: + api_error = api_err + logger.error(f"群 {group_id} API 调用失败: {api_err}") + + # 第一次失败就放弃(该 API 不支持) + if query_rounds == 0: + logger.error(f"群 {group_id} 当前 OneBot 实现不支持 get_group_msg_history API") + return [] + elif hasattr(bot_instance, 'api'): + # QQ官方 bot (botClient) 方式 - 官方API不支持历史消息 + logger.error(f"群 {group_id} 检测到 QQ 官方 Bot,官方 API 不支持获取历史消息") + return [] + else: + logger.error(f"群 {group_id} 未知的 bot_instance 类型,无法调用 API") + logger.error(f"bot_instance 类型: {type(bot_instance)}") + return [] if not result or "messages" not in result: logger.warning(f"群 {group_id} API返回无效结果: {result}")