修正864在线态识别并补强资料同步等待
This commit is contained in:
@@ -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"}:
|
||||
|
||||
Reference in New Issue
Block a user