Handle user updates within GUILD_MEMBER_UPDATE
This commit is contained in:
parent
eb641569f7
commit
fd5faac42b
@ -266,17 +266,20 @@ class Member(discord.abc.Messageable, _BaseUser):
|
||||
self._client_status[None] = data['status']
|
||||
|
||||
if len(user) > 1:
|
||||
u = self._user
|
||||
original = (u.name, u.avatar, u.discriminator)
|
||||
# These keys seem to always be available
|
||||
modified = (user['username'], user['avatar'], user['discriminator'])
|
||||
if original != modified:
|
||||
to_return = User._copy(self._user)
|
||||
u.name, u.avatar, u.discriminator = modified
|
||||
# Signal to dispatch on_user_update
|
||||
return to_return, u
|
||||
return self._update_inner_user(user)
|
||||
return False
|
||||
|
||||
def _update_inner_user(self, user):
|
||||
u = self._user
|
||||
original = (u.name, u.avatar, u.discriminator)
|
||||
# These keys seem to always be available
|
||||
modified = (user['username'], user['avatar'], user['discriminator'])
|
||||
if original != modified:
|
||||
to_return = User._copy(self._user)
|
||||
u.name, u.avatar, u.discriminator = modified
|
||||
# Signal to dispatch on_user_update
|
||||
return to_return, u
|
||||
|
||||
@property
|
||||
def status(self):
|
||||
""":class:`Status`: The member's overall status. If the value is unknown, then it will be a :class:`str` instead."""
|
||||
@ -433,7 +436,7 @@ class Member(discord.abc.Messageable, _BaseUser):
|
||||
guild = self.guild
|
||||
if len(self._roles) == 0:
|
||||
return guild.default_role
|
||||
|
||||
|
||||
return max(guild.get_role(rid) or guild.default_role for rid in self._roles)
|
||||
|
||||
@property
|
||||
|
@ -692,8 +692,12 @@ class ConnectionState:
|
||||
|
||||
member = guild.get_member(user_id)
|
||||
if member is not None:
|
||||
old_member = copy.copy(member)
|
||||
old_member = Member._copy(member)
|
||||
member._update(data)
|
||||
user_update = member._update_inner_user(user)
|
||||
if user_update:
|
||||
self.dispatch('user_update', user_update[0], user_update[1])
|
||||
|
||||
self.dispatch('member_update', old_member, member)
|
||||
else:
|
||||
log.debug('GUILD_MEMBER_UPDATE referencing an unknown member ID: %s. Discarding.', user_id)
|
||||
|
Loading…
x
Reference in New Issue
Block a user