From f95ccf53e017931c97fc11a6039998ef9eb53e9e Mon Sep 17 00:00:00 2001 From: NCPlayz Date: Mon, 13 Jan 2020 21:32:39 +0000 Subject: [PATCH] Fix issue with `shard_ready` not dispatching when not fetching offline --- discord/state.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/discord/state.py b/discord/state.py index 10208d3bf..5c9f7df4a 100644 --- a/discord/state.py +++ b/discord/state.py @@ -1026,25 +1026,19 @@ class AutoShardedConnectionState(ConnectionState): launch.set() await asyncio.sleep(2.0 * self.shard_count) - if self._fetch_offline: - guilds = sorted(self._ready_state.guilds, key=lambda g: g[0].shard_id) + guilds = sorted(self._ready_state.guilds, key=lambda g: g[0].shard_id) - for shard_id, sub_guilds_info in itertools.groupby(guilds, key=lambda g: g[0].shard_id): - sub_guilds, sub_available = zip(*sub_guilds_info) + for shard_id, sub_guilds_info in itertools.groupby(guilds, key=lambda g: g[0].shard_id): + sub_guilds, sub_available = zip(*sub_guilds_info) + if self._fetch_offline: await self.request_offline_members(sub_guilds, shard_id=shard_id) - for guild, unavailable in zip(sub_guilds, sub_available): - if unavailable is False: - self.dispatch('guild_available', guild) - else: - self.dispatch('guild_join', guild) - self.dispatch('shard_ready', shard_id) - else: - for guild, unavailable in self._ready_state.guilds: + for guild, unavailable in zip(sub_guilds, sub_available): if unavailable is False: self.dispatch('guild_available', guild) else: self.dispatch('guild_join', guild) + self.dispatch('shard_ready', shard_id) # remove the state try: