From 61ee88b0fc48ba2bfc479bccec0e99a92c05fa1d Mon Sep 17 00:00:00 2001 From: Rapptz Date: Mon, 8 Apr 2019 07:43:55 -0400 Subject: [PATCH] Fix oversight where on_disconnect did not get called on WS termination. --- discord/client.py | 1 + discord/shard.py | 2 ++ 2 files changed, 3 insertions(+) diff --git a/discord/client.py b/discord/client.py index 2817ecc05..7ae87a4eb 100644 --- a/discord/client.py +++ b/discord/client.py @@ -382,6 +382,7 @@ class Client: await self.ws.poll_event() except ResumeWebSocket: log.info('Got a request to RESUME the websocket.') + self.dispatch('disconnect') coro = DiscordWebSocket.from_client(self, shard_id=self.shard_id, session=self.ws.session_id, sequence=self.ws.sequence, resume=True) self.ws = await asyncio.wait_for(coro, timeout=180.0, loop=self.loop) diff --git a/discord/shard.py b/discord/shard.py index 3bf3788b9..b15b22a20 100644 --- a/discord/shard.py +++ b/discord/shard.py @@ -43,6 +43,7 @@ class Shard: def __init__(self, ws, client): self.ws = ws self._client = client + self._dispatch = client.dispatch self.loop = self._client.loop self._current = self.loop.create_future() self._current.set_result(None) # we just need an already done future @@ -79,6 +80,7 @@ class Shard: log.info('Got a request to RESUME the websocket at Shard ID %s.', self.id) coro = DiscordWebSocket.from_client(self._client, resume=True, shard_id=self.id, session=self.ws.session_id, sequence=self.ws.sequence) + self._dispatch('disconnect') self.ws = await asyncio.wait_for(coro, timeout=180.0, loop=self.loop) def get_future(self):