From d9756176b57054892c155230c740b24a008bbdfd Mon Sep 17 00:00:00 2001 From: Teknium <127238744+teknium1@users.noreply.github.com> Date: Wed, 2 Sep 2026 19:47:24 -0700 Subject: [PATCH] refactor(gateway/platforms): qqbot connect/_reconnect share _open_gateway_ws --- gateway/platforms/qqbot/adapter.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/gateway/platforms/qqbot/adapter.py b/gateway/platforms/qqbot/adapter.py index 6a4ea923c8..67f0309e8f 100644 --- a/gateway/platforms/qqbot/adapter.py +++ b/gateway/platforms/qqbot/adapter.py @@ -201,10 +201,7 @@ class QQAdapter(BasePlatformAdapter): timeout=30.0, follow_redirects=True, event_hooks={"response": [_ssrf_redirect_guard]}, limits=platform_httpx_limits()) - await self._ensure_token() - gateway_url = await self._get_gateway_url() - logger.info("[%s] Gateway URL: %s", self._log_tag, gateway_url) - await self._open_ws(gateway_url) + await self._open_gateway_ws(log_url=True) self._listen_task = asyncio.create_task(self._listen_loop()) self._heartbeat_task = asyncio.create_task(self._heartbeat_loop()) self._mark_connected() @@ -300,6 +297,14 @@ class QQAdapter(BasePlatformAdapter): # ── WebSocket lifecycle ── + async def _open_gateway_ws(self, *, log_url: bool = False) -> None: + """Token → gateway URL → WebSocket (shared by connect and _reconnect).""" + await self._ensure_token() + gateway_url = await self._get_gateway_url() + if log_url: + logger.info("[%s] Gateway URL: %s", self._log_tag, gateway_url) + await self._open_ws(gateway_url) + async def _open_ws(self, gateway_url: str) -> None: await self._close_ws() # Honor proxy env vars for the WebSocket (WSL setups need this). @@ -412,9 +417,7 @@ class QQAdapter(BasePlatformAdapter): self._heartbeat_interval = 30.0 # reset until Hello try: - await self._ensure_token() - gateway_url = await self._get_gateway_url() - await self._open_ws(gateway_url) + await self._open_gateway_ws() self._mark_connected() logger.info("[%s] Reconnected", self._log_tag) return True