Add ability to use primary guild (clan) data for users

Co-authored-by: blord0 <admin@blord.xyz>
Co-authored-by: DA344 <108473820+DA-344@users.noreply.github.com>
Co-authored-by: dolfies <jeyalfie47@gmail.com>
This commit is contained in:
blord0
2025-07-18 01:41:30 +01:00
committed by GitHub
parent 13dc9c9d16
commit 7724764ffe
7 changed files with 150 additions and 2 deletions

View File

@ -32,6 +32,7 @@ from .colour import Colour
from .enums import DefaultAvatar
from .flags import PublicUserFlags
from .utils import snowflake_time, _bytes_to_base64_data, MISSING, _get_as_snowflake
from .primary_guild import PrimaryGuild
if TYPE_CHECKING:
from typing_extensions import Self
@ -43,7 +44,12 @@ if TYPE_CHECKING:
from .message import Message
from .state import ConnectionState
from .types.channel import DMChannel as DMChannelPayload
from .types.user import PartialUser as PartialUserPayload, User as UserPayload, AvatarDecorationData
from .types.user import (
PartialUser as PartialUserPayload,
User as UserPayload,
AvatarDecorationData,
PrimaryGuild as PrimaryGuildPayload,
)
__all__ = (
@ -71,6 +77,7 @@ class BaseUser(_UserTag):
'_public_flags',
'_state',
'_avatar_decoration_data',
'_primary_guild',
)
if TYPE_CHECKING:
@ -86,6 +93,7 @@ class BaseUser(_UserTag):
_accent_colour: Optional[int]
_public_flags: int
_avatar_decoration_data: Optional[AvatarDecorationData]
_primary_guild: Optional[PrimaryGuildPayload]
def __init__(self, *, state: ConnectionState, data: Union[UserPayload, PartialUserPayload]) -> None:
self._state = state
@ -123,6 +131,7 @@ class BaseUser(_UserTag):
self.bot = data.get('bot', False)
self.system = data.get('system', False)
self._avatar_decoration_data = data.get('avatar_decoration_data')
self._primary_guild = data.get('primary_guild', None)
@classmethod
def _copy(cls, user: Self) -> Self:
@ -139,6 +148,7 @@ class BaseUser(_UserTag):
self._state = user._state
self._public_flags = user._public_flags
self._avatar_decoration_data = user._avatar_decoration_data
self._primary_guild = user._primary_guild
return self
@ -305,6 +315,15 @@ class BaseUser(_UserTag):
return self.global_name
return self.name
@property
def primary_guild(self) -> PrimaryGuild:
""":class:`PrimaryGuild`: Returns the user's primary guild.
.. versionadded:: 2.6"""
if self._primary_guild is not None:
return PrimaryGuild(state=self._state, data=self._primary_guild)
return PrimaryGuild._default(self._state)
def mentioned_in(self, message: Message) -> bool:
"""Checks if the user is mentioned in the specified message.