guild.members: call pres_dispatch on role updates

- presence: fix 'everyone' list detection
This commit is contained in:
Luna Mendes 2018-11-09 16:38:19 -03:00
parent 7103ac01ca
commit 58c818bb68
2 changed files with 12 additions and 1 deletions

View File

@ -141,6 +141,15 @@ async def modify_guild_member(guild_id, member_id):
member = await app.storage.get_member_data_one(guild_id, member_id)
member.pop('joined_at')
lazy_guilds = app.dispatcher.backends['lazy_guild']
lists = lazy_guilds.get_gml_guild(guild_id)
for member_list in lists:
# just call pres_update but only for role changes.
await member_list.pres_update(member_id, {
'roles': member['roles'],
})
await app.dispatcher.dispatch_guild(guild_id, 'GUILD_MEMBER_UPDATE', {**{
'guild_id': str(guild_id)
}, **member})

View File

@ -123,7 +123,9 @@ class PresenceManager:
log.debug('Lazy Dispatch to {}',
len(session_ids))
if member_list.channel_id == 'everyone':
# if we are on the 'everyone' member list, we don't
# dispatch a PRESENCE_UPDATE for those shards.
if member_list.channel_id == member_list.guild_id:
in_lazy.extend(session_ids)
pres_update_payload = {