From 0b16e97a3e8fbb3dcd9ee8f103a342639d960252 Mon Sep 17 00:00:00 2001 From: SXP-Simon Date: Wed, 11 Mar 2026 22:19:30 +0800 Subject: [PATCH] =?UTF-8?q?fix(onebot):=20=E5=A2=9E=E5=BC=BA=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E5=8F=91=E9=80=81=E8=B6=85=E6=97=B6=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/adapters/onebot_adapter.py | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/infrastructure/platform/adapters/onebot_adapter.py b/src/infrastructure/platform/adapters/onebot_adapter.py index bb826eb..3bbf841 100644 --- a/src/infrastructure/platform/adapters/onebot_adapter.py +++ b/src/infrastructure/platform/adapters/onebot_adapter.py @@ -563,12 +563,23 @@ class OneBotAdapter(PlatformAdapter): if is_potential_success: logger.warning( f"OneBot 发送群 {group_id} 图片出现疑似超时 ({e})。 " - "这通常是因为图片较大导致上传缓慢。如果群内稍后出现了图片,请忽略随后可能的重试提示。" - ) - return ( - False # 返回 False,由上层 RetryManager 接管(带 20s 延迟观察期) + "进入 10s 贴身观察期,尝试通过历史回显核实..." ) + # 等待 10s (NTQQ 后台上传可能在此时完成) + await asyncio.sleep(10) + + # [真相检查] 尝试从历史记录中找回失踪的消息 + if await self.was_image_sent_recently( + group_id, seconds=300, token=caption + ): + logger.info( + f"[OneBot] [真相拦截] 确认群 {group_id} 的超时图片已在后台成功送达。拦截重试。" + ) + return True + + return False # 没找回,返回 False,由上层 RetryManager 接管(带 20s 延迟观察期) + logger.error(f"OneBot 图片发送最终失败: {e}") return False @@ -585,7 +596,7 @@ class OneBotAdapter(PlatformAdapter): history = await self.bot.call_action( "get_group_msg_history", group_id=int(group_id), - count=50, # 适度缩减扫描深度以提高成功率 + count=100, # 增大扫描深度以应对高频群聊 ) except Exception as e: logger.warning(