mirror of https://gitlab.com/litecord/litecord.git
gateway: populate ready.users array
This commit is contained in:
parent
03d470dbe7
commit
ae6c85f0ad
|
|
@ -69,6 +69,29 @@ WebsocketProperties = collections.namedtuple(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def _complete_users_list(base_ready, user_ready) -> dict:
|
||||||
|
"""Use the data we were already preparing to send in READY to construct
|
||||||
|
the users array, saving on I/O cost."""
|
||||||
|
|
||||||
|
# TODO deduplication
|
||||||
|
users_list = []
|
||||||
|
|
||||||
|
for guild in base_ready["guilds"]:
|
||||||
|
if guild["unavailable"]:
|
||||||
|
continue
|
||||||
|
|
||||||
|
for member in guild["members"]:
|
||||||
|
users_list.append(member["user"])
|
||||||
|
|
||||||
|
for private_channel in base_ready["private_channels"]:
|
||||||
|
for recipient in private_channel["recipients"]:
|
||||||
|
users_list.append(recipient)
|
||||||
|
|
||||||
|
ready = {**base_ready, **user_ready}
|
||||||
|
ready["users"] = users_list
|
||||||
|
return ready
|
||||||
|
|
||||||
|
|
||||||
class GatewayWebsocket:
|
class GatewayWebsocket:
|
||||||
"""Main gateway websocket logic."""
|
"""Main gateway websocket logic."""
|
||||||
|
|
||||||
|
|
@ -378,7 +401,8 @@ class GatewayWebsocket:
|
||||||
"shard": [self.state.current_shard, self.state.shard_count],
|
"shard": [self.state.current_shard, self.state.shard_count],
|
||||||
}
|
}
|
||||||
|
|
||||||
await self.dispatch("READY", {**base_ready, **user_ready})
|
full_ready_data = _complete_users_list(base_ready, user_ready)
|
||||||
|
await self.dispatch("READY", full_ready_data)
|
||||||
app.sched.spawn(self._guild_dispatch(guilds))
|
app.sched.spawn(self._guild_dispatch(guilds))
|
||||||
|
|
||||||
async def _check_shards(self, shard, user_id):
|
async def _check_shards(self, shard, user_id):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue