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

@@ -74,6 +74,7 @@ if TYPE_CHECKING:
GuildVoiceState as GuildVoiceStatePayload,
VoiceState as VoiceStatePayload,
)
from .primary_guild import PrimaryGuild
VocalGuildChannel = Union[VoiceChannel, StageChannel]
@@ -309,6 +310,7 @@ class Member(discord.abc.Messageable, _UserTag):
accent_colour: Optional[Colour]
avatar_decoration: Optional[Asset]
avatar_decoration_sku_id: Optional[int]
primary_guild: PrimaryGuild
def __init__(self, *, data: MemberWithUserPayload, guild: Guild, state: ConnectionState):
self._state: ConnectionState = state
@@ -452,9 +454,11 @@ class Member(discord.abc.Messageable, _UserTag):
u.global_name,
u._public_flags,
u._avatar_decoration_data['sku_id'] if u._avatar_decoration_data is not None else None,
u._primary_guild,
)
decoration_payload = user.get('avatar_decoration_data')
primary_guild_payload = user.get('primary_guild', None)
# These keys seem to always be available
modified = (
user['username'],
@@ -463,16 +467,26 @@ class Member(discord.abc.Messageable, _UserTag):
user.get('global_name'),
user.get('public_flags', 0),
decoration_payload['sku_id'] if decoration_payload is not None else None,
primary_guild_payload,
)
if original != modified:
to_return = User._copy(self._user)
u.name, u.discriminator, u._avatar, u.global_name, u._public_flags, u._avatar_decoration_data = (
(
u.name,
u.discriminator,
u._avatar,
u.global_name,
u._public_flags,
u._avatar_decoration_data,
u._primary_guild,
) = (
user['username'],
user['discriminator'],
user['avatar'],
user.get('global_name'),
user.get('public_flags', 0),
decoration_payload,
primary_guild_payload,
)
# Signal to dispatch on_user_update
return to_return, u