mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-07-22 19:06:44 +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)
|
self._add_server(server)
|
||||||
return 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
|
@asyncio.coroutine
|
||||||
def parse_ready(self, data):
|
def parse_ready(self, data):
|
||||||
self.user = User(**data['user'])
|
self.user = User(**data['user'])
|
||||||
@ -148,9 +152,7 @@ class ConnectionState:
|
|||||||
|
|
||||||
chunks = []
|
chunks = []
|
||||||
for server in large_servers:
|
for server in large_servers:
|
||||||
chunks_needed = math.ceil(server._member_count / 1000)
|
chunks.extend(self.chunks_needed(server))
|
||||||
for chunk in range(chunks_needed):
|
|
||||||
chunks.append(self.receive_chunk(server.id))
|
|
||||||
|
|
||||||
if chunks:
|
if chunks:
|
||||||
yield from asyncio.wait(chunks)
|
yield from asyncio.wait(chunks)
|
||||||
@ -292,6 +294,7 @@ class ConnectionState:
|
|||||||
|
|
||||||
self.dispatch('member_update', old_member, member)
|
self.dispatch('member_update', old_member, member)
|
||||||
|
|
||||||
|
@asyncio.coroutine
|
||||||
def parse_guild_create(self, data):
|
def parse_guild_create(self, data):
|
||||||
unavailable = data.get('unavailable')
|
unavailable = data.get('unavailable')
|
||||||
if unavailable == False:
|
if unavailable == False:
|
||||||
@ -314,6 +317,14 @@ class ConnectionState:
|
|||||||
# available, so it isn't in the cache...
|
# available, so it isn't in the cache...
|
||||||
|
|
||||||
server = self._add_server_from_data(data)
|
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)
|
self.dispatch('server_join', server)
|
||||||
|
|
||||||
def parse_guild_update(self, data):
|
def parse_guild_update(self, data):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user