From 23e054f8926e90f7fa103c2ab2d6277acea014af Mon Sep 17 00:00:00 2001 From: blord0 Date: Wed, 18 Jun 2025 22:34:18 +0100 Subject: [PATCH] Add default state for a PrimaryGuild --- discord/primary_guild.py | 11 ++++++++++- discord/user.py | 8 ++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/discord/primary_guild.py b/discord/primary_guild.py index dec682639..9ad67cc05 100644 --- a/discord/primary_guild.py +++ b/discord/primary_guild.py @@ -33,6 +33,7 @@ from .utils import snowflake_time, _get_as_snowflake if TYPE_CHECKING: from .state import ConnectionState from .types.primary_guild import PrimaryGuild as PrimaryGuildPayload + from typing_extensions import Self class PrimaryGuild: @@ -43,7 +44,9 @@ class PrimaryGuild: id: Optional[:class:`int`] The ID of the user's primary guild, if any. tag: Optional[:class:`str`] - The guild's tag. + The primary guild's tag. + badge: Optional[:class:`Asset`] + The primary guild's asset identity_enabled: Optional[:class:`bool`] Whether the user has their primary guild publicly displayed. If ``None``, the user has a public guild but has not reaffirmed the guild identity after a change @@ -85,5 +88,11 @@ class PrimaryGuild: return snowflake_time(self.id) return None + @classmethod + def _default(cls, state: ConnectionState) -> Self: + """Creates a blank :class:`PrimaryGuild`""" + payload: PrimaryGuildPayload = {"identity_guild_id": None, "identity_enabled": False, "tag": None, "badge": None} + return cls(state=state, data=payload) + def __repr__(self) -> str: return f'' diff --git a/discord/user.py b/discord/user.py index 44f15dfcd..4bd2ac21d 100644 --- a/discord/user.py +++ b/discord/user.py @@ -312,11 +312,11 @@ class BaseUser(_UserTag): return self.name @property - def primary_guild(self) -> Optional[PrimaryGuild]: - """:class:`PrimaryGuild`: Returns the user's primary guild, if applicable.""" - if self._primary_guild and self._primary_guild.get("identity_enabled"): + def primary_guild(self) -> PrimaryGuild: + """:class:`PrimaryGuild`: Returns the user's primary guild.""" + if self._primary_guild: return PrimaryGuild(state=self._state, data=self._primary_guild) - return None + return PrimaryGuild._default(self._state) def mentioned_in(self, message: Message) -> bool: """Checks if the user is mentioned in the specified message.