From 268b921961186771529265f2e5b437342c948ce6 Mon Sep 17 00:00:00 2001 From: Luna Date: Sun, 5 May 2019 17:15:53 -0300 Subject: [PATCH] gateway.websocket: add shards field to ready see https://github.com/discordapp/discord-api-docs/pull/826 --- litecord/gateway/websocket.py | 13 ++++++++----- tests/test_websocket.py | 35 ++++++++++++++++++++--------------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/litecord/gateway/websocket.py b/litecord/gateway/websocket.py index 04ee7e4..335cfd1 100644 --- a/litecord/gateway/websocket.py +++ b/litecord/gateway/websocket.py @@ -393,17 +393,17 @@ class GatewayWebsocket: user_id = self.state.user_id user = await self.storage.get_user(user_id, True) - uready = {} + user_ready = {} if not self.state.bot: # user, fetch info - uready = await self._user_ready() + user_ready = await self._user_ready() private_channels = ( await self.user_storage.get_dms(user_id) + await self.user_storage.get_gdms(user_id) ) - await self.dispatch('READY', {**{ + base_ready = { 'v': 6, 'user': user, @@ -411,8 +411,11 @@ class GatewayWebsocket: 'guilds': guilds, 'session_id': self.state.session_id, - '_trace': ['transbian'] - }, **uready}) + '_trace': ['transbian'], + 'shard': self.state.shard, + } + + await self.dispatch('READY', {**base_ready, **user_ready}) # async dispatch of guilds self.ext.loop.create_task(self._guild_dispatch(guilds)) diff --git a/tests/test_websocket.py b/tests/test_websocket.py index 65bd51f..826fe58 100644 --- a/tests/test_websocket.py +++ b/tests/test_websocket.py @@ -126,25 +126,30 @@ async def test_ready_fields(test_cli): } }) - ready = await _json(conn) - assert isinstance(ready, dict) - assert ready['op'] == OP.DISPATCH - assert ready['t'] == 'READY' + try: + ready = await _json(conn) + assert isinstance(ready, dict) + assert ready['op'] == OP.DISPATCH + assert ready['t'] == 'READY' - data = ready['d'] - assert isinstance(data, dict) + data = ready['d'] + assert isinstance(data, dict) - # NOTE: change if default gateway changes - assert data['v'] == 6 + # NOTE: change if default gateway changes + assert data['v'] == 6 - # make sure other fields exist and are with - # proper types. - assert isinstance(data['user'], dict) - assert isinstance(data['private_channels'], list) - assert isinstance(data['guilds'], list) - assert isinstance(data['session_id'], str) + # make sure other fields exist and are with + # proper types. + assert isinstance(data['user'], dict) + assert isinstance(data['private_channels'], list) + assert isinstance(data['guilds'], list) + assert isinstance(data['session_id'], str) + assert isinstance(data['_trace'], list) - await _close(conn) + if 'shard' in data: + assert isinstance(data['shard'], list) + finally: + await _close(conn) @pytest.mark.asyncio