From 00640bfda711edd81e754eaa6314faad9c0fcce8 Mon Sep 17 00:00:00 2001 From: Xeno Date: Fri, 31 May 2024 00:47:59 +0530 Subject: [PATCH] feat: new changes to avatarURL method over GuildMember & User (#194) * fix(GuildMember#avatarURL): use dynamic response, to return gif avatar if the avatar is a gif * fix(User#avatarURL): dynamic response, if avatar is a gif return gif * fix(avatarURL): specified extension is being overriden by gif if avatar starts with a_ * chore: change in parseCDNURL so it's effective for almost everything * chore: re-add GuildMember#dynamicAvatarURL * fix(GuildEmoji#create): returns void while it should return the resolve promise of the created emoji --------- Co-authored-by: NotAditya69 <90441096+NotAditya69@users.noreply.github.com> --- src/api/Router.ts | 1 + src/common/shorters/emojis.ts | 2 ++ src/structures/GuildMember.ts | 6 +++++- src/structures/User.ts | 1 + 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/api/Router.ts b/src/api/Router.ts index 766f62d..6c6eb40 100644 --- a/src/api/Router.ts +++ b/src/api/Router.ts @@ -73,6 +73,7 @@ export interface CDNUrlOptions extends BaseCDNUrlOptions { export function parseCDNURL(route: string, options: CDNUrlOptions = {}) { if (options.forceStatic && route.includes('a_')) options.extension = 'png'; + if (!options.extension && route.includes('a_')) options.extension = 'gif'; const url = new URL(`${route}.${options.extension || 'png'}`); diff --git a/src/common/shorters/emojis.ts b/src/common/shorters/emojis.ts index 7a744ad..106b7ed 100644 --- a/src/common/shorters/emojis.ts +++ b/src/common/shorters/emojis.ts @@ -39,7 +39,9 @@ export class EmojiShorter extends BaseShorter { const emoji = await this.client.proxy.guilds(guildId).emojis.post({ body: bodyResolved, }); + await this.client.cache.emojis?.setIfNI('GuildEmojisAndStickers', emoji.id!, guildId, emoji); + return new GuildEmoji(this.client, emoji, guildId); } diff --git a/src/structures/GuildMember.ts b/src/structures/GuildMember.ts index cb2bfaf..47547d9 100644 --- a/src/structures/GuildMember.ts +++ b/src/structures/GuildMember.ts @@ -177,7 +177,11 @@ export class GuildMember extends BaseGuildMember { } avatarURL(options?: ImageOptions) { - return this.user.avatarURL(options); + if (!this.avatar) { + return null; + } + + return this.rest.cdn.guilds(this.guildId).users(this.id).avatars(this.avatar).get(options); } dynamicAvatarURL(options?: ImageOptions) { diff --git a/src/structures/User.ts b/src/structures/User.ts index bbe8e65..8ce155f 100644 --- a/src/structures/User.ts +++ b/src/structures/User.ts @@ -37,6 +37,7 @@ export class User extends DiscordBase { if (!this.avatar) { return this.rest.cdn.embed.avatars.get(calculateUserDefaultAvatarIndex(this.id, this.discriminator)); } + return this.rest.cdn.avatars(this.id).get(this.avatar, options); }