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.
This commit is contained in:
Rapptz 2020-01-28 23:56:46 -05:00
parent 8767c478ed
commit 5c7df3d943
2 changed files with 4 additions and 2 deletions

View File

@ -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)

View File

@ -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: