diff options
| author | Rapptz <[email protected]> | 2018-09-24 22:50:05 -0400 |
|---|---|---|
| committer | Rapptz <[email protected]> | 2018-09-24 22:50:05 -0400 |
| commit | 095f0ec2fc48ff353bd3bee21d0055b99fdc3aa9 (patch) | |
| tree | f53b341df1f7ec40482fdf0758dbeda61b457582 /discord/member.py | |
| parent | Change internal representation of roles in Member and Emoji. (diff) | |
| download | discord.py-095f0ec2fc48ff353bd3bee21d0055b99fdc3aa9.tar.xz discord.py-095f0ec2fc48ff353bd3bee21d0055b99fdc3aa9.zip | |
Optimise some member and user related routines.
* Skip user update if possible
* Drop copy.copy in favour of manual copy
Credit to Hornwitser for these findings.
Diffstat (limited to 'discord/member.py')
| -rw-r--r-- | discord/member.py | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/discord/member.py b/discord/member.py index 009a2104..f265a1be 100644 --- a/discord/member.py +++ b/discord/member.py @@ -178,6 +178,20 @@ class Member(discord.abc.Messageable, _BaseUser): def __hash__(self): return hash(self._user) + @classmethod + def _copy(cls, member): + self = cls.__new__(cls) # to bypass __init__ + + self._roles = utils.SnowflakeList(member._roles, is_sorted=True) + self.joined_at = member.joined_at + self.status = member.status + self.guild = member.guild + self.nick = member.nick + self.activity = member.activity + self._state = member._state + self._user = User._copy(member._user) + return self + async def _get_channel(self): ch = await self.create_dm() return ch @@ -205,10 +219,11 @@ class Member(discord.abc.Messageable, _BaseUser): self.status = try_enum(Status, data['status']) self.activity = create_activity(data.get('game')) - u = self._user - u.name = user.get('username', u.name) - u.avatar = user.get('avatar', u.avatar) - u.discriminator = user.get('discriminator', u.discriminator) + if len(user) > 1: + u = self._user + u.name = user.get('username', u.name) + u.avatar = user.get('avatar', u.avatar) + u.discriminator = user.get('discriminator', u.discriminator) def _copy(self): c = copy.copy(self) |