gateway.websocket: add shards field to ready

see https://github.com/discordapp/discord-api-docs/pull/826
This commit is contained in:
Luna 2019-05-05 17:15:53 -03:00
parent 28602dfa68
commit 268b921961
2 changed files with 28 additions and 20 deletions

View File

@ -393,17 +393,17 @@ class GatewayWebsocket:
user_id = self.state.user_id user_id = self.state.user_id
user = await self.storage.get_user(user_id, True) user = await self.storage.get_user(user_id, True)
uready = {} user_ready = {}
if not self.state.bot: if not self.state.bot:
# user, fetch info # user, fetch info
uready = await self._user_ready() user_ready = await self._user_ready()
private_channels = ( private_channels = (
await self.user_storage.get_dms(user_id) + await self.user_storage.get_dms(user_id) +
await self.user_storage.get_gdms(user_id) await self.user_storage.get_gdms(user_id)
) )
await self.dispatch('READY', {**{ base_ready = {
'v': 6, 'v': 6,
'user': user, 'user': user,
@ -411,8 +411,11 @@ class GatewayWebsocket:
'guilds': guilds, 'guilds': guilds,
'session_id': self.state.session_id, 'session_id': self.state.session_id,
'_trace': ['transbian'] '_trace': ['transbian'],
}, **uready}) 'shard': self.state.shard,
}
await self.dispatch('READY', {**base_ready, **user_ready})
# async dispatch of guilds # async dispatch of guilds
self.ext.loop.create_task(self._guild_dispatch(guilds)) self.ext.loop.create_task(self._guild_dispatch(guilds))

View File

@ -126,6 +126,7 @@ async def test_ready_fields(test_cli):
} }
}) })
try:
ready = await _json(conn) ready = await _json(conn)
assert isinstance(ready, dict) assert isinstance(ready, dict)
assert ready['op'] == OP.DISPATCH assert ready['op'] == OP.DISPATCH
@ -143,7 +144,11 @@ async def test_ready_fields(test_cli):
assert isinstance(data['private_channels'], list) assert isinstance(data['private_channels'], list)
assert isinstance(data['guilds'], list) assert isinstance(data['guilds'], list)
assert isinstance(data['session_id'], str) assert isinstance(data['session_id'], str)
assert isinstance(data['_trace'], list)
if 'shard' in data:
assert isinstance(data['shard'], list)
finally:
await _close(conn) await _close(conn)