From ee1aa9c823d2d53ee016f8fa03292dea65b0b090 Mon Sep 17 00:00:00 2001 From: Tenpi Date: Tue, 3 Sep 2024 00:31:18 -0400 Subject: [PATCH 1/7] types: add ApplicationEmoji to EmojiResolvable --- packages/discord.js/typings/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 1dc3d97ea94a..cbaccfb78182 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -5675,7 +5675,7 @@ export type EmojiIdentifierResolvable = | `<${'' | 'a'}:${string}:${Snowflake}>` | string; -export type EmojiResolvable = Snowflake | GuildEmoji | ReactionEmoji; +export type EmojiResolvable = Snowflake | GuildEmoji | ReactionEmoji | ApplicationEmoji; export interface FetchApplicationCommandOptions extends BaseFetchOptions { guildId?: Snowflake; From 58d1f5f275b18b8a2ad0c1d7d38ed55a41066aee Mon Sep 17 00:00:00 2001 From: Tenpi Date: Tue, 3 Sep 2024 01:16:39 -0400 Subject: [PATCH 2/7] typings: add ApplicationEmoji to MessageReaction#emoji --- packages/discord.js/typings/index.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index cbaccfb78182..8e00af25526d 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -2429,13 +2429,13 @@ export class MessagePayload { export class MessageReaction { private constructor(client: Client, data: RawMessageReactionData, message: Message); - private _emoji: GuildEmoji | ReactionEmoji; + private _emoji: GuildEmoji | ReactionEmoji | ApplicationEmoji; public burstColors: string[] | null; public readonly client: Client; public count: number; public countDetails: ReactionCountDetailsData; - public get emoji(): GuildEmoji | ReactionEmoji; + public get emoji(): GuildEmoji | ReactionEmoji | ApplicationEmoji; public me: boolean; public meBurst: boolean; public message: Message | PartialMessage; From 95b4babe18cb6427db12019a1d5b3425a595c2c4 Mon Sep 17 00:00:00 2001 From: Tenpi Date: Tue, 3 Sep 2024 02:20:00 -0400 Subject: [PATCH 3/7] removed ApplicationEmoji from MessageReaction --- packages/discord.js/typings/index.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 8e00af25526d..cbaccfb78182 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -2429,13 +2429,13 @@ export class MessagePayload { export class MessageReaction { private constructor(client: Client, data: RawMessageReactionData, message: Message); - private _emoji: GuildEmoji | ReactionEmoji | ApplicationEmoji; + private _emoji: GuildEmoji | ReactionEmoji; public burstColors: string[] | null; public readonly client: Client; public count: number; public countDetails: ReactionCountDetailsData; - public get emoji(): GuildEmoji | ReactionEmoji | ApplicationEmoji; + public get emoji(): GuildEmoji | ReactionEmoji; public me: boolean; public meBurst: boolean; public message: Message | PartialMessage; From d27076c038d885cc836bf049e0918ba3014b88f0 Mon Sep 17 00:00:00 2001 From: Tenpi Date: Tue, 3 Sep 2024 11:50:01 -0400 Subject: [PATCH 4/7] update BaseGuildEmojiManager --- packages/discord.js/src/managers/BaseGuildEmojiManager.js | 7 ++++++- packages/discord.js/typings/index.d.ts | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/discord.js/src/managers/BaseGuildEmojiManager.js b/packages/discord.js/src/managers/BaseGuildEmojiManager.js index 89eee4c95a32..83e672abc96a 100644 --- a/packages/discord.js/src/managers/BaseGuildEmojiManager.js +++ b/packages/discord.js/src/managers/BaseGuildEmojiManager.js @@ -3,6 +3,7 @@ const CachedManager = require('./CachedManager'); const GuildEmoji = require('../structures/GuildEmoji'); const ReactionEmoji = require('../structures/ReactionEmoji'); +const ApplicationEmoji = require('../structures/ApplicationEmoji'); const { parseEmoji } = require('../util/Util'); /** @@ -25,7 +26,8 @@ class BaseGuildEmojiManager extends CachedManager { * * A Snowflake * * A GuildEmoji object * * A ReactionEmoji object - * @typedef {Snowflake|GuildEmoji|ReactionEmoji} EmojiResolvable + * * An ApplicationEmoji object + * @typedef {Snowflake|GuildEmoji|ReactionEmoji|ApplicationEmoji} EmojiResolvable */ /** @@ -35,6 +37,7 @@ class BaseGuildEmojiManager extends CachedManager { */ resolve(emoji) { if (emoji instanceof ReactionEmoji) return super.resolve(emoji.id); + if (emoji instanceof ApplicationEmoji) return super.resolve(emoji.id); return super.resolve(emoji); } @@ -45,6 +48,7 @@ class BaseGuildEmojiManager extends CachedManager { */ resolveId(emoji) { if (emoji instanceof ReactionEmoji) return emoji.id; + if (emoji instanceof ApplicationEmoji) return emoji.id; return super.resolveId(emoji); } @@ -65,6 +69,7 @@ class BaseGuildEmojiManager extends CachedManager { const emojiResolvable = this.resolve(emoji); if (emojiResolvable) return emojiResolvable.identifier; if (emoji instanceof ReactionEmoji) return emoji.identifier; + if (emoji instanceof ApplicationEmoji) return emoji.identifier; if (typeof emoji === 'string') { const res = parseEmoji(emoji); if (res?.name.length) { diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index cbaccfb78182..8e00af25526d 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -2429,13 +2429,13 @@ export class MessagePayload { export class MessageReaction { private constructor(client: Client, data: RawMessageReactionData, message: Message); - private _emoji: GuildEmoji | ReactionEmoji; + private _emoji: GuildEmoji | ReactionEmoji | ApplicationEmoji; public burstColors: string[] | null; public readonly client: Client; public count: number; public countDetails: ReactionCountDetailsData; - public get emoji(): GuildEmoji | ReactionEmoji; + public get emoji(): GuildEmoji | ReactionEmoji | ApplicationEmoji; public me: boolean; public meBurst: boolean; public message: Message | PartialMessage; From d42f8dacdf1bc028d9df355f0e96b2060440c9da Mon Sep 17 00:00:00 2001 From: Tenpi Date: Tue, 3 Sep 2024 12:04:27 -0400 Subject: [PATCH 5/7] chore: lint error --- packages/discord.js/src/managers/BaseGuildEmojiManager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/discord.js/src/managers/BaseGuildEmojiManager.js b/packages/discord.js/src/managers/BaseGuildEmojiManager.js index 83e672abc96a..305c1aaa9594 100644 --- a/packages/discord.js/src/managers/BaseGuildEmojiManager.js +++ b/packages/discord.js/src/managers/BaseGuildEmojiManager.js @@ -1,9 +1,9 @@ 'use strict'; const CachedManager = require('./CachedManager'); +const ApplicationEmoji = require('../structures/ApplicationEmoji'); const GuildEmoji = require('../structures/GuildEmoji'); const ReactionEmoji = require('../structures/ReactionEmoji'); -const ApplicationEmoji = require('../structures/ApplicationEmoji'); const { parseEmoji } = require('../util/Util'); /** From 6f25ce8b131deb13446db3c17b9bfd35ffbb7eb6 Mon Sep 17 00:00:00 2001 From: Tenpi Date: Wed, 4 Sep 2024 10:06:07 -0400 Subject: [PATCH 6/7] feat: add ApplicationEmoji to MessageReaction#emoji getter --- .../discord.js/src/structures/MessageReaction.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/discord.js/src/structures/MessageReaction.js b/packages/discord.js/src/structures/MessageReaction.js index 45103b553c01..2295859c6087 100644 --- a/packages/discord.js/src/structures/MessageReaction.js +++ b/packages/discord.js/src/structures/MessageReaction.js @@ -1,6 +1,7 @@ 'use strict'; const { Routes } = require('discord-api-types/v10'); +const ApplicationEmoji = require('./ApplicationEmoji'); const GuildEmoji = require('./GuildEmoji'); const ReactionEmoji = require('./ReactionEmoji'); const ReactionUserManager = require('../managers/ReactionUserManager'); @@ -108,14 +109,16 @@ class MessageReaction { } /** - * The emoji of this reaction. Either a {@link GuildEmoji} object for known custom emojis, or a {@link ReactionEmoji} - * object which has fewer properties. Whatever the prototype of the emoji, it will still have + * The emoji of this reaction. Either a {@link GuildEmoji} object for known custom emojis, + * {@link ApplicationEmoji} for application emojis, or a {@link ReactionEmoji} object + * which has fewer properties. Whatever the prototype of the emoji, it will still have * `name`, `id`, `identifier` and `toString()` - * @type {GuildEmoji|ReactionEmoji} + * @type {GuildEmoji|ReactionEmoji|ApplicationEmoji} * @readonly */ get emoji() { if (this._emoji instanceof GuildEmoji) return this._emoji; + if (this._emoji instanceof ApplicationEmoji) return this._emoji; // Check to see if the emoji has become known to the client if (this._emoji.id) { const emojis = this.message.client.emojis.cache; @@ -123,6 +126,13 @@ class MessageReaction { const emoji = emojis.get(this._emoji.id); this._emoji = emoji; return emoji; + } else { + const applicationEmojis = this.message.client.application.emojis.cache; + if (applicationEmojis.has(this._emoji.id)) { + const emoji = applicationEmojis.get(this._emoji.id); + this._emoji = emoji; + return emoji; + } } } return this._emoji; From 7f24d3887af228337f3d85e07151ef000315fe55 Mon Sep 17 00:00:00 2001 From: Tenpi Date: Wed, 4 Sep 2024 21:25:41 -0400 Subject: [PATCH 7/7] refactor: check application emojis first --- .../discord.js/src/structures/MessageReaction.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/discord.js/src/structures/MessageReaction.js b/packages/discord.js/src/structures/MessageReaction.js index 2295859c6087..283156465df3 100644 --- a/packages/discord.js/src/structures/MessageReaction.js +++ b/packages/discord.js/src/structures/MessageReaction.js @@ -121,18 +121,17 @@ class MessageReaction { if (this._emoji instanceof ApplicationEmoji) return this._emoji; // Check to see if the emoji has become known to the client if (this._emoji.id) { + const applicationEmojis = this.message.client.application.emojis.cache; + if (applicationEmojis.has(this._emoji.id)) { + const emoji = applicationEmojis.get(this._emoji.id); + this._emoji = emoji; + return emoji; + } const emojis = this.message.client.emojis.cache; if (emojis.has(this._emoji.id)) { const emoji = emojis.get(this._emoji.id); this._emoji = emoji; return emoji; - } else { - const applicationEmojis = this.message.client.application.emojis.cache; - if (applicationEmojis.has(this._emoji.id)) { - const emoji = applicationEmojis.get(this._emoji.id); - this._emoji = emoji; - return emoji; - } } } return this._emoji;