Browse Source

Bump waiting time of GUILD_CREATE stream by number of shards waited.

2 seconds might be too short and cause it to finish waiting while other
shards are still IDENTIFYing.
pull/2543/head
Rapptz 5 years ago
parent
commit
5c7df3d943
  1. 1
      discord/shard.py
  2. 5
      discord/state.py

1
discord/shard.py

@ -251,6 +251,7 @@ class AutoShardedClient(Client):
self._connection.shard_count = self.shard_count
shard_ids = self.shard_ids if self.shard_ids else range(self.shard_count)
self._connection.shard_ids = shard_ids
for shard_id in shard_ids:
await self.launch_shard(gateway, shard_id)

5
discord/state.py

@ -1029,6 +1029,7 @@ class AutoShardedConnectionState(ConnectionState):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._ready_task = None
self.shard_ids = ()
async def request_offline_members(self, guilds, *, shard_id):
# get all the chunks
@ -1051,10 +1052,10 @@ class AutoShardedConnectionState(ConnectionState):
async def _delay_ready(self):
launch = self._ready_state.launch
while True:
# this snippet of code is basically waiting 2 seconds
# this snippet of code is basically waiting 2 * shard_ids seconds
# until the last GUILD_CREATE was sent
try:
await asyncio.wait_for(launch.wait(), timeout=2.0)
await asyncio.wait_for(launch.wait(), timeout=2.0 * len(self.shard_ids))
except asyncio.TimeoutError:
break
else:

Loading…
Cancel
Save