修正864在线态识别并补强资料同步等待

This commit is contained in:
liuwei
2026-05-07 15:52:24 +08:00
parent 0b59bc4a0a
commit 904c20bb62
2 changed files with 82 additions and 2 deletions

View File

@@ -24,16 +24,32 @@ class LoginMixin(Server864APIClientBase):
normalized_login_state = self._normalize_online_text(
self._pick_first(payload, "loginState", "LoginState", "status_text", "statusText")
)
raw_login_state = self._pick_first(payload, "loginState", "LoginState")
normalized_status = self._normalize_online_text(
self._pick_first(payload, "status", "Status", "state_text", "stateText")
)
state_value = self._pick_first(payload, "state", "State")
login_flag = self._pick_first(payload, "isLogin", "IsLogin", "online", "Online", "isOnline", "IsOnline")
login_err_msg = self._normalize_online_text(
self._pick_first(payload, "loginErrMsg", "LoginErrMsg", "msg", "message")
)
if normalized_login_state in {"online", "已登录", "在线"}:
return True
# 864 的 `GetLoginStatus` 在你当前这版 server 里会直接返回 `loginState: 1`
# 1. 这不是扫码阶段的 `CheckLoginStatus.state`,而是服务端自身维护的登录态枚举;
# 2. 之前这里只识别到了字符串 `"online"`,导致明明已经在线却仍被判成未登录;
# 3. 这里把常见数字态一并纳入在线判定,避免后续资料拉取与前端显示被卡住。
try:
normalized_login_state_value = int(raw_login_state or 0)
except (TypeError, ValueError):
normalized_login_state_value = 0
if normalized_login_state_value in {1, 2}:
return True
if normalized_status in {"online", "已登录", "在线"}:
return True
if "在线状态良好" in login_err_msg or "账号在线" in login_err_msg:
return True
if isinstance(login_flag, bool):
return login_flag
if str(login_flag or "").strip().lower() in {"true", "1", "online"}: