Skip to content

Commit 9eb33c9

Browse files
authored
fix: account for discord's discrim change (#1384)
* fix: correct typehint for discrim * fix💥: account for discord's discrim change * fix: match behavior to discord docs pr discord/discord-api-docs#6130 * feat: set default for discrim --------- Co-authored-by: Astrea49 <25420078+Astrea49@users.noreply.github.com>
1 parent bce7aca commit 9eb33c9

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

interactions/models/discord/user.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,9 @@ class BaseUser(DiscordObject, _SendDMMixin):
5151
global_name: str | None = attrs.field(
5252
repr=True, metadata=docs("The user's chosen display name, platform-wide"), default=None
5353
)
54-
discriminator: int = attrs.field(repr=True, metadata=docs("The user's 4-digit discord-tag"))
54+
discriminator: str = attrs.field(
55+
repr=True, metadata=docs("The user's 4-digit discord-tag"), default="0"
56+
) # will likely be removed in future api version
5557
avatar: "Asset" = attrs.field(repr=False, metadata=docs("The user's default avatar"))
5658

5759
def __str__(self) -> str:
@@ -62,13 +64,17 @@ def _process_dict(cls, data: Dict[str, Any], client: "Client") -> Dict[str, Any]
6264
if not isinstance(data["avatar"], Asset):
6365
if data["avatar"]:
6466
data["avatar"] = Asset.from_path_hash(client, f"avatars/{data['id']}/{{}}", data["avatar"])
67+
elif data["discriminator"] == "0":
68+
data["avatar"] = Asset(client, f"{Asset.BASE}/embed/avatars/{(int(data['id']) >> 22) % 5}")
6569
else:
6670
data["avatar"] = Asset(client, f"{Asset.BASE}/embed/avatars/{int(data['discriminator']) % 5}")
6771
return data
6872

6973
@property
7074
def tag(self) -> str:
7175
"""Returns the user's Discord tag."""
76+
if self.discriminator == "0":
77+
return f"@{self.username}"
7278
return f"{self.username}#{self.discriminator}"
7379

7480
@property

interactions/models/discord/user.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class _SendDMMixin(SendMixin):
3939
class FakeBaseUserMixin(DiscordObject, _SendDMMixin):
4040
username: str
4141
global_name: str | None
42-
discriminator: int
42+
discriminator: str
4343
avatar: Asset
4444
def __str__(self) -> str: ...
4545
@classmethod

0 commit comments

Comments
 (0)