mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-04-22 08:44:10 +00:00
Fix bug where large servers in GUILD_CREATE did not get chunked.
This commit is contained in:
parent
425bd2c091
commit
6ac2e07833
@ -128,6 +128,10 @@ class ConnectionState:
|
||||
self._add_server(server)
|
||||
return server
|
||||
|
||||
def chunks_needed(self, server):
|
||||
for chunk in range(math.ceil(server._member_count / 1000)):
|
||||
yield self.receive_chunk(server.id)
|
||||
|
||||
@asyncio.coroutine
|
||||
def parse_ready(self, data):
|
||||
self.user = User(**data['user'])
|
||||
@ -148,9 +152,7 @@ class ConnectionState:
|
||||
|
||||
chunks = []
|
||||
for server in large_servers:
|
||||
chunks_needed = math.ceil(server._member_count / 1000)
|
||||
for chunk in range(chunks_needed):
|
||||
chunks.append(self.receive_chunk(server.id))
|
||||
chunks.extend(self.chunks_needed(server))
|
||||
|
||||
if chunks:
|
||||
yield from asyncio.wait(chunks)
|
||||
@ -292,6 +294,7 @@ class ConnectionState:
|
||||
|
||||
self.dispatch('member_update', old_member, member)
|
||||
|
||||
@asyncio.coroutine
|
||||
def parse_guild_create(self, data):
|
||||
unavailable = data.get('unavailable')
|
||||
if unavailable == False:
|
||||
@ -314,6 +317,14 @@ class ConnectionState:
|
||||
# available, so it isn't in the cache...
|
||||
|
||||
server = self._add_server_from_data(data)
|
||||
|
||||
# check if it requires chunking
|
||||
if server.large:
|
||||
yield from self.chunker(server)
|
||||
chunks = list(self.chunks_needed(server))
|
||||
if chunks:
|
||||
yield from asyncio.wait(chunks)
|
||||
|
||||
self.dispatch('server_join', server)
|
||||
|
||||
def parse_guild_update(self, data):
|
||||
|
Loading…
x
Reference in New Issue
Block a user