Skip to content

Commit 87a9dcd

Browse files
fix(members): make sure the member's inner user is updated (#2970)
* fix: make sure the member's inner user is updated when fetched * chore: add changelog * style(pre-commit): auto fixes from pre-commit.com hooks --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent ca91b3e commit 87a9dcd

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,9 @@ These changes are available on the `master` branch, but have not yet been releas
8989
parameters. ([#2952](https://github.com/Pycord-Development/pycord/pull/2952))
9090
- Fixed autocomplete crashing when using an async staticmethod.
9191
([#2966](https://github.com/Pycord-Development/pycord/pull/2966))
92+
- Fixed attributes like :attr:`Member.display_banner` being `None` when the member has
93+
no guild specific banner, but does have a global one.
94+
([#2968](https://github.com/Pycord-Development/pycord/pull/2949))
9295

9396
### Deprecated
9497

discord/state.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,13 +357,21 @@ def _update_references(self, ws: DiscordWebSocket) -> None:
357357
def store_user(self, data: UserPayload) -> User:
358358
user_id = int(data["id"])
359359
try:
360-
return self._users[user_id]
360+
user = self._users[user_id]
361361
except KeyError:
362362
user = User(state=self, data=data)
363363
if user.discriminator != "0000":
364364
self._users[user_id] = user
365365
user._stored = True
366366
return user
367+
else:
368+
# Making sure we don't mutate the cached user
369+
# because we cannot make sure it's up to date.
370+
# but still return the updated version of the user.
371+
# This make sure data like banner, etc are updated.
372+
copied_user = user._copy(user)
373+
copied_user._update(data)
374+
return copied_user
367375

368376
def deref_user(self, user_id: int) -> None:
369377
self._users.pop(user_id, None)

0 commit comments

Comments
 (0)