feat: add support for new username system (#3035)

* feat: add support for new username system

* fix: default avatar calculation in avatarUrl(), also remove support for old system

* fix: use description from docs for user.globalName

* fix: typings

* fix: avatarUrl() to support both old and new username system
This commit is contained in:
Awesome Stickz
2023-06-13 15:39:06 +00:00
committed by GitHub
parent c9c510b0cd
commit f9a5fc1afe
5 changed files with 11 additions and 3 deletions
+2
View File
@@ -334,6 +334,7 @@ export interface Transformers {
} }
user: { user: {
username: boolean username: boolean
globalName: boolean
locale: boolean locale: boolean
flags: boolean flags: boolean
premiumType: boolean premiumType: boolean
@@ -672,6 +673,7 @@ export function createTransformers(options: Partial<Transformers>): Transformers
}, },
user: { user: {
username: false, username: false,
globalName: false,
locale: false, locale: false,
flags: false, flags: false,
premiumType: false, premiumType: false,
@@ -8,6 +8,7 @@ export function transformUserToDiscordUser(bot: Bot, payload: User): DiscordUser
return { return {
id: payload.id.toString(), id: payload.id.toString(),
username: payload.username, username: payload.username,
global_name: payload.globalName,
discriminator: payload.discriminator, discriminator: payload.discriminator,
avatar: payload.avatar ? iconBigintToHash(payload.avatar) : null, avatar: payload.avatar ? iconBigintToHash(payload.avatar) : null,
locale: payload.locale, locale: payload.locale,
+4 -1
View File
@@ -32,6 +32,7 @@ export function transformUser(bot: Bot, payload: DiscordUser): User {
if (props.publicFlags) user.publicFlags = new ToggleBitfield(payload.public_flags) if (props.publicFlags) user.publicFlags = new ToggleBitfield(payload.public_flags)
if (payload.id && props.id) user.id = bot.transformers.snowflake(payload.id) if (payload.id && props.id) user.id = bot.transformers.snowflake(payload.id)
if (payload.username && props.username) user.username = payload.username if (payload.username && props.username) user.username = payload.username
if (payload.global_name && props.globalName) user.globalName = payload.global_name
if (payload.discriminator && props.discriminator) user.discriminator = payload.discriminator if (payload.discriminator && props.discriminator) user.discriminator = payload.discriminator
if (payload.locale && props.locale) user.locale = payload.locale if (payload.locale && props.locale) user.locale = payload.locale
if (payload.email && props.email) user.email = payload.email if (payload.email && props.email) user.email = payload.email
@@ -61,6 +62,8 @@ export interface User extends BaseUser {
toggles?: UserToggles toggles?: UserToggles
/** The user's username, not unique across the platform */ /** The user's username, not unique across the platform */
username: string username: string
/** The user's display name, if it is set. For bots, this is the application name */
globalName?: string
/** The user's chosen language option */ /** The user's chosen language option */
locale?: string locale?: string
/** The flags on a user's account */ /** The flags on a user's account */
@@ -73,7 +76,7 @@ export interface User extends BaseUser {
accentColor?: number accentColor?: number
/** The user's id */ /** The user's id */
id: bigint id: bigint
/** The user's 4-digit discord-tag */ /** The user's discord-tag */
discriminator: string discriminator: string
/** The user's avatar hash */ /** The user's avatar hash */
avatar?: bigint avatar?: bigint
+3 -1
View File
@@ -46,6 +46,8 @@ import type {
export interface DiscordUser { export interface DiscordUser {
/** The user's username, not unique across the platform */ /** The user's username, not unique across the platform */
username: string username: string
/** The user's display name, if it is set. For bots, this is the application name */
global_name: string | null
/** The user's chosen language option */ /** The user's chosen language option */
locale?: string locale?: string
/** The flags on a user's account */ /** The flags on a user's account */
@@ -58,7 +60,7 @@ export interface DiscordUser {
accent_color?: number accent_color?: number
/** The user's id */ /** The user's id */
id: string id: string
/** The user's 4-digit discord-tag */ /** The user's discord-tag */
discriminator: string discriminator: string
/** The user's avatar hash */ /** The user's avatar hash */
avatar: string | null avatar: string | null
+1 -1
View File
@@ -41,7 +41,7 @@ export function avatarUrl(
options?.size ?? 128, options?.size ?? 128,
options?.format, options?.format,
) )
: `https://cdn.discordapp.com/embed/avatars/${Number(discriminator) % 5}.png` : `https://cdn.discordapp.com/embed/avatars/${discriminator === '0' ? (BigInt(userId) >> BigInt(22)) % BigInt(6) : Number(discriminator) % 5}.png`
} }
/** /**