From 97019f3c43ceeb7063a68a7ceb636a2d7006d673 Mon Sep 17 00:00:00 2001 From: liuwei Date: Thu, 7 May 2026 14:18:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=BC=E5=AE=B9864=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E7=8A=B6=E6=80=81=E6=8E=A2=E9=92=88=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wechat_ipad/providers/server_864/runtime.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/wechat_ipad/providers/server_864/runtime.py b/wechat_ipad/providers/server_864/runtime.py index 7fd1fb0..a793b00 100644 --- a/wechat_ipad/providers/server_864/runtime.py +++ b/wechat_ipad/providers/server_864/runtime.py @@ -325,12 +325,29 @@ class Server864RuntimeMixin: if await self.get_init_status(): return except Exception as e: - logger.warning(f"server_864 检查初始化状态失败: {e}") + error_message = str(e).strip() + # 864 不同版本对“初始化状态”接口的支持并不一致: + # 1. 实际联调里已经出现“登录成功后消息同步正常,但 GetInItStatus 返回该链接不存在”的情况; + # 2. 这说明它更像一个附加探针,而不是启动主链路的硬前置条件; + # 3. 因此遇到这种兼容性错误时直接放行,避免机器人已经可用却持续打印误导性告警。 + if "该链接不存在" in error_message: + logger.info("server_864 当前版本未提供稳定的初始化状态查询,跳过该探针并继续启动") + return + logger.warning(f"server_864 检查初始化状态失败: {error_message}") await asyncio.sleep(2) async def _refresh_identity_from_profile(self, *, logger) -> None: """从 864 的资料接口刷新当前登录身份。""" - profile = await self.get_profile() + try: + profile = await self.get_profile() + except Exception as e: + error_message = str(e).strip() + # 864 有些版本在消息链路可用后,资料接口仍可能短时间不可用: + # 1. 此时若直接抛异常,会让“已经登录成功”的启动流程被资料查询反向拖垮; + # 2. 项目主链路真正依赖的是后续消息同步与发送能力,而不是这里的展示性资料; + # 3. 所以这里改成降级告警,保留已有身份字段,等后续再由可用接口补齐。 + logger.warning(f"server_864 刷新登录账号资料失败,继续沿用当前缓存身份: {error_message}") + return self.wxid = str( profile.get("UserName") or profile.get("userName")