@@ -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
0 commit comments