diff --git a/packages/bot/src/transformers.ts b/packages/bot/src/transformers.ts index e1ba9c588..15d7d0112 100644 --- a/packages/bot/src/transformers.ts +++ b/packages/bot/src/transformers.ts @@ -334,6 +334,7 @@ export interface Transformers { } user: { username: boolean + globalName: boolean locale: boolean flags: boolean premiumType: boolean @@ -672,6 +673,7 @@ export function createTransformers(options: Partial): Transformers }, user: { username: false, + globalName: false, locale: false, flags: false, premiumType: false, diff --git a/packages/bot/src/transformers/reverse/member.ts b/packages/bot/src/transformers/reverse/member.ts index 9c4b38e71..ffdd24b94 100644 --- a/packages/bot/src/transformers/reverse/member.ts +++ b/packages/bot/src/transformers/reverse/member.ts @@ -8,6 +8,7 @@ export function transformUserToDiscordUser(bot: Bot, payload: User): DiscordUser return { id: payload.id.toString(), username: payload.username, + global_name: payload.globalName, discriminator: payload.discriminator, avatar: payload.avatar ? iconBigintToHash(payload.avatar) : null, locale: payload.locale, diff --git a/packages/bot/src/transformers/user.ts b/packages/bot/src/transformers/user.ts index 182194919..c2dd56695 100644 --- a/packages/bot/src/transformers/user.ts +++ b/packages/bot/src/transformers/user.ts @@ -32,6 +32,7 @@ export function transformUser(bot: Bot, payload: DiscordUser): User { if (props.publicFlags) user.publicFlags = new ToggleBitfield(payload.public_flags) if (payload.id && props.id) user.id = bot.transformers.snowflake(payload.id) 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.locale && props.locale) user.locale = payload.locale if (payload.email && props.email) user.email = payload.email @@ -61,6 +62,8 @@ export interface User extends BaseUser { toggles?: UserToggles /** The user's username, not unique across the platform */ 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 */ locale?: string /** The flags on a user's account */ @@ -73,7 +76,7 @@ export interface User extends BaseUser { accentColor?: number /** The user's id */ id: bigint - /** The user's 4-digit discord-tag */ + /** The user's discord-tag */ discriminator: string /** The user's avatar hash */ avatar?: bigint diff --git a/packages/types/src/discord.ts b/packages/types/src/discord.ts index ca613ea98..25393e988 100644 --- a/packages/types/src/discord.ts +++ b/packages/types/src/discord.ts @@ -46,6 +46,8 @@ import type { export interface DiscordUser { /** The user's username, not unique across the platform */ 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 */ locale?: string /** The flags on a user's account */ @@ -58,7 +60,7 @@ export interface DiscordUser { accent_color?: number /** The user's id */ id: string - /** The user's 4-digit discord-tag */ + /** The user's discord-tag */ discriminator: string /** The user's avatar hash */ avatar: string | null diff --git a/packages/utils/src/images.ts b/packages/utils/src/images.ts index 18fec0e7d..aca913851 100644 --- a/packages/utils/src/images.ts +++ b/packages/utils/src/images.ts @@ -41,7 +41,7 @@ export function avatarUrl( options?.size ?? 128, 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` } /**