diff options
Diffstat (limited to 'discord/user.py')
| -rw-r--r-- | discord/user.py | 19 |
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 |