兼容864初始化状态探针异常返回

This commit is contained in:
liuwei
2026-05-07 14:18:37 +08:00
parent cf6b676a56
commit 97019f3c43

View File

@@ -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")