Skip to content

Commit 52e3cde

Browse files
feat: Member.display_banner
1 parent 8a09b89 commit 52e3cde

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

discord/asset.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,17 @@ def _from_guild_avatar(
212212
animated=animated,
213213
)
214214

215+
@classmethod
216+
def _from_guild_banner(cls, state, guild_id: int, member_id: int, banner: str) -> Asset:
217+
animated: bool = banner.startswith("a_")
218+
format: str = "gif" if animated else "png"
219+
return cls(
220+
state,
221+
url=f"{cls.BASE}/guilds/{guild_id}/users/{member_id}/banners/{banner}.{format}?size=1024",
222+
key=banner,
223+
animated=animated,
224+
)
225+
215226
@classmethod
216227
def _from_icon(cls, state, object_id: int, icon_hash: str, path: str) -> Asset:
217228
return cls(

discord/member.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,7 @@ class Member(discord.abc.Messageable, _UserTag):
306306
mutual_guilds: list[Guild]
307307
public_flags: PublicUserFlags
308308
banner: Asset | None
309+
display_banner: Asset | None
309310
accent_color: Colour | None
310311
accent_colour: Colour | None
311312
communication_disabled_until: datetime.datetime | None
@@ -603,6 +604,31 @@ def guild_avatar(self) -> Asset | None:
603604
self._state, self.guild.id, self.id, self._avatar
604605
)
605606

607+
@property
608+
def display_banner(self) -> Asset | None:
609+
"""Returns the member's display banner.
610+
611+
For regular members this is just their banner, but
612+
if they have a guild specific banner then that
613+
is returned instead.
614+
615+
.. versionadded:: 2.7
616+
"""
617+
return self.guild_banner or self._user.banner
618+
619+
@property
620+
def guild_banner(self) -> Asset | None:
621+
"""Returns an :class:`Asset` for the guild banner
622+
the member has. If unavailable, ``None`` is returned.
623+
624+
.. versionadded:: 2.7
625+
"""
626+
if self._user.banner is None:
627+
return None
628+
return Asset._from_guild_banner(
629+
self._state, self.guild.id, self.id, self._user.banner
630+
)
631+
606632
@property
607633
def activity(self) -> ActivityTypes | None:
608634
"""Returns the primary

0 commit comments

Comments
 (0)