mirror of https://gitlab.com/litecord/litecord.git
pubsub.lazy_guild: fix fetching user id from item
- pubsub.lazy_guild: fix get_state on unknown session id
This commit is contained in:
parent
bd9c4cb26c
commit
773ab8fd18
|
|
@ -364,14 +364,13 @@ class GuildMemberList:
|
||||||
self._set_empty_list()
|
self._set_empty_list()
|
||||||
|
|
||||||
def get_state(self, session_id: str):
|
def get_state(self, session_id: str):
|
||||||
state = self.state_man.fetch_raw(session_id)
|
try:
|
||||||
|
state = self.state_man.fetch_raw(session_id)
|
||||||
if not state:
|
return state
|
||||||
|
except KeyError:
|
||||||
self.unsub(session_id)
|
self.unsub(session_id)
|
||||||
return
|
return
|
||||||
|
|
||||||
return state
|
|
||||||
|
|
||||||
async def _dispatch_sess(self, session_ids: List[str],
|
async def _dispatch_sess(self, session_ids: List[str],
|
||||||
operations: List[Operation]):
|
operations: List[Operation]):
|
||||||
|
|
||||||
|
|
@ -394,10 +393,16 @@ class GuildMemberList:
|
||||||
}
|
}
|
||||||
|
|
||||||
states = map(self.get_state, session_ids)
|
states = map(self.get_state, session_ids)
|
||||||
|
dispatched = []
|
||||||
|
|
||||||
for state in (s for s in states if s is not None):
|
for state in (s for s in states if s is not None):
|
||||||
await state.ws.dispatch(
|
await state.ws.dispatch(
|
||||||
'GUILD_MEMBER_LIST_UPDATE', payload)
|
'GUILD_MEMBER_LIST_UPDATE', payload)
|
||||||
|
|
||||||
|
dispatched.append(state.session_id)
|
||||||
|
|
||||||
|
return dispatched
|
||||||
|
|
||||||
async def shard_query(self, session_id: str, ranges: list):
|
async def shard_query(self, session_id: str, ranges: list):
|
||||||
"""Send a GUILD_MEMBER_LIST_UPDATE event
|
"""Send a GUILD_MEMBER_LIST_UPDATE event
|
||||||
for a shard that is querying about the member list.
|
for a shard that is querying about the member list.
|
||||||
|
|
@ -468,13 +473,14 @@ class GuildMemberList:
|
||||||
|
|
||||||
presences[p_idx].update(partial_presence)
|
presences[p_idx].update(partial_presence)
|
||||||
|
|
||||||
|
def _get_id(p):
|
||||||
|
return p.get('member', {}).get('user', {}).get('id')
|
||||||
|
|
||||||
item_index = index_by_func(
|
item_index = index_by_func(
|
||||||
lambda p: p.get('user', {}).get('id') == str(user_id),
|
lambda p: _get_id(p) == str(user_id),
|
||||||
self.items
|
self.items
|
||||||
)
|
)
|
||||||
|
|
||||||
pprint.pprint(self.items)
|
|
||||||
|
|
||||||
if not item_index:
|
if not item_index:
|
||||||
log.warning('lazy guild got invalid pres update uid={}',
|
log.warning('lazy guild got invalid pres update uid={}',
|
||||||
user_id)
|
user_id)
|
||||||
|
|
@ -493,7 +499,7 @@ class GuildMemberList:
|
||||||
|
|
||||||
session_ids = filter(_is_in, self.state.keys())
|
session_ids = filter(_is_in, self.state.keys())
|
||||||
|
|
||||||
await self._dispatch_sess(
|
return await self._dispatch_sess(
|
||||||
session_ids,
|
session_ids,
|
||||||
[
|
[
|
||||||
Operation('UPDATE', {
|
Operation('UPDATE', {
|
||||||
|
|
@ -503,8 +509,6 @@ class GuildMemberList:
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
return list(session_ids)
|
|
||||||
|
|
||||||
async def dispatch(self, event: str, data: Any):
|
async def dispatch(self, event: str, data: Any):
|
||||||
"""Modify the member list and dispatch the respective
|
"""Modify the member list and dispatch the respective
|
||||||
events to subscribed shards.
|
events to subscribed shards.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue