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:
|
||||
"""Main gateway websocket logic."""
|
||||
|
||||
|
|
@ -378,7 +401,8 @@ class GatewayWebsocket:
|
|||
"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))
|
||||
|
||||
async def _check_shards(self, shard, user_id):
|
||||
|
|
|
|||
Loading…
Reference in New Issue