feat: user avatar decoration

#9018 djs
This commit is contained in:
March 7th 2023-01-06 18:08:20 +07:00
parent fe7e3b8fda
commit 27dca8890a
3 changed files with 24 additions and 0 deletions

View File

@ -175,6 +175,16 @@ class User extends Base {
*/ */
this.botInGuildsCount = data.approximate_guild_count; this.botInGuildsCount = data.approximate_guild_count;
} }
if ('avatar_decoration' in data) {
/**
* The user avatar decoration's hash
* @type {?string}
*/
this.avatarDecoration = data.avatar_decoration;
} else {
this.avatarDecoration ??= null;
}
} }
/** /**
@ -401,6 +411,16 @@ class User extends Base {
return this.client.rest.cdn.Avatar(this.id, this.avatar, format, size, dynamic); return this.client.rest.cdn.Avatar(this.id, this.avatar, format, size, dynamic);
} }
/**
* A link to the user's avatar decoration.
* @param {StaticImageURLOptions} [options={}] Options for the image URL
* @returns {?string}
*/
avatarDecorationURL({ format, size } = {}) {
if (!this.avatarDecoration) return null;
return this.client.rest.cdn.AvatarDecoration(this.id, this.avatarDecoration, format, size);
}
/** /**
* A link to the user's default avatar * A link to the user's default avatar
* @type {string} * @type {string}

View File

@ -196,6 +196,8 @@ exports.Endpoints = {
if (dynamic && hash.startsWith('a_')) format = 'gif'; if (dynamic && hash.startsWith('a_')) format = 'gif';
return makeImageUrl(`${root}/avatars/${userId}/${hash}`, { format, size }); return makeImageUrl(`${root}/avatars/${userId}/${hash}`, { format, size });
}, },
AvatarDecoration: (userId, hash, format = 'png', size) =>
makeImageUrl(`${root}/avatar-decorations/${userId}/${hash}`, { format, size }),
GuildMemberAvatar: (guildId, memberId, hash, format = 'webp', size, dynamic = false) => { GuildMemberAvatar: (guildId, memberId, hash, format = 'webp', size, dynamic = false) => {
if (dynamic && hash.startsWith('a_')) format = 'gif'; if (dynamic && hash.startsWith('a_')) format = 'gif';
return makeImageUrl(`${root}/guilds/${guildId}/users/${memberId}/avatars/${hash}`, { format, size }); return makeImageUrl(`${root}/guilds/${guildId}/users/${memberId}/avatars/${hash}`, { format, size });

2
typings/index.d.ts vendored
View File

@ -3069,6 +3069,7 @@ export class User extends PartialTextBasedChannel(Base) {
public application: ClientApplication; public application: ClientApplication;
public accentColor: number | null | undefined; public accentColor: number | null | undefined;
public avatar: string | null; public avatar: string | null;
public avatarDecoration: string | null;
public banner: string | null | undefined; public banner: string | null | undefined;
public bot: boolean; public bot: boolean;
public readonly createdAt: Date; public readonly createdAt: Date;
@ -3095,6 +3096,7 @@ export class User extends PartialTextBasedChannel(Base) {
public readonly mutualFriends: Promise<Collection<Snowflake, User>>; public readonly mutualFriends: Promise<Collection<Snowflake, User>>;
public readonly voice: VoiceState; public readonly voice: VoiceState;
public avatarURL(options?: ImageURLOptions): string | null; public avatarURL(options?: ImageURLOptions): string | null;
public avatarDecorationURL(options?: StaticImageURLOptions): string | null;
public bannerURL(options?: ImageURLOptions): string | null; public bannerURL(options?: ImageURLOptions): string | null;
public createDM(force?: boolean): Promise<DMChannel>; public createDM(force?: boolean): Promise<DMChannel>;
public deleteDM(): Promise<DMChannel>; public deleteDM(): Promise<DMChannel>;