Browse Source

Fix bug where large servers in GUILD_CREATE did not get chunked.

pull/124/head
Rapptz 9 years ago
parent
commit
6ac2e07833
  1. 17
      discord/state.py

17
discord/state.py

@ -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…
Cancel
Save