fix(douyu): 修复未换绑成功时角色信息被待确认新角色污染 & 增加绑定接口明细日志

This commit is contained in:
yml2213
2026-08-02 13:18:56 +08:00
parent 4fab6ed0aa
commit de2e53748d
3 changed files with 180 additions and 27 deletions
+24 -2
View File
@@ -247,7 +247,27 @@ class DouyuActivityClient:
)
if payload.get("error") not in (0, "0", None):
raise DouyuActivityError(payload.get("msg") or "查询绑定信息失败")
return self._parse_bind_info(payload, act_alias=act_alias, api_version="v2" if v2 else "v1")
parsed = self._parse_bind_info(payload, act_alias=act_alias, api_version="v2" if v2 else "v1")
self._log_bind_info(parsed)
return parsed
def _log_bind_info(self, parsed: dict[str, Any]) -> None:
"""输出绑定信息接口返回的角色明细(用于排查两个接口/多个 alias 的角色差异)。"""
self.logger(
f"查询绑定信息明细 api={parsed.get('api_version') or '-'} "
f"act={parsed.get('act_alias') or '-'} "
f"role={parsed.get('role_name') or '-'} "
f"area={parsed.get('area_name') or '-'} plat={parsed.get('plat_name') or '-'} "
f"nick={parsed.get('nickname') or '-'} "
f"bound_account={1 if parsed.get('is_bound_account') else 0} "
f"bound_role={1 if parsed.get('is_bound_role') else 0} "
f"bound_act={1 if parsed.get('is_bound_act') else 0} "
f"need_act={1 if parsed.get('need_bind_act') else 0} "
f"need_role={1 if parsed.get('need_bind_role') else 0} "
f"wait={parsed.get('change_role_wait_time') if parsed.get('change_role_wait_time') is not None else '-'} "
f"can_change_role={parsed.get('can_change_role')} "
f"can_change_time={parsed.get('can_change_time') if parsed.get('can_change_time') is not None else '-'}"
)
def _parse_bind_info(self, payload: dict[str, Any], *, act_alias: str, api_version: str) -> dict[str, Any]:
"""统一解析不同活动的腾讯游戏绑定信息。"""
@@ -321,7 +341,9 @@ class DouyuActivityClient:
)
if payload.get("error") not in (0, "0", None):
raise DouyuActivityError(payload.get("msg") or "查询电竞手册绑定信息失败")
return self._parse_bind_info(payload, act_alias=act_alias, api_version="esports")
parsed = self._parse_bind_info(payload, act_alias=act_alias, api_version="esports")
self._log_bind_info(parsed)
return parsed
def get_esports_bind_qr(self, act_alias: str) -> dict[str, Any]:
"""生成电竞手册的腾讯角色绑定二维码链接。"""