aboutsummaryrefslogtreecommitdiff
path: root/discord/user.py
diff options
context:
space:
mode:
Diffstat (limited to 'discord/user.py')
-rw-r--r--discord/user.py19
1 files changed, 18 insertions, 1 deletions
diff --git a/discord/user.py b/discord/user.py
index 4771df0a..39c0f5b6 100644
--- a/discord/user.py
+++ b/discord/user.py
@@ -322,11 +322,28 @@ class User(BaseUser, discord.abc.Messageable):
Specifies if the user is a system user (i.e. represents Discord officially).
"""
- __slots__ = ('__weakref__',)
+ __slots__ = ('_stored',)
+
+ def __init__(self, *, state, data):
+ super().__init__(state=state, data=data)
+ self._stored = False
def __repr__(self):
return f'<User id={self.id} name={self.name!r} discriminator={self.discriminator!r} bot={self.bot}>'
+ def __del__(self) -> None:
+ try:
+ if self._stored:
+ self._state.deref_user(self.id)
+ except Exception:
+ pass
+
+ @classmethod
+ def _copy(cls, user):
+ self = super()._copy(user)
+ self._stored = getattr(user, '_stored', False)
+ return self
+
async def _get_channel(self):
ch = await self.create_dm()
return ch