From 90d3b282684f5a4bbf9ce2672fa5efd5ec802e95 Mon Sep 17 00:00:00 2001 From: Jiralite <33201955+Jiralite@users.noreply.github.com> Date: Tue, 15 Jul 2025 19:52:47 +0100 Subject: [PATCH] fix(Emoji): remove incorrect nullables, add `ApplicationEmoji#available` (#10990) fix: remove incorrect nullables, add `ApplicationEmoji#available` Co-authored-by: Amgelo563 <61554601+Amgelo563@users.noreply.github.com> --- .../src/structures/ApplicationEmoji.js | 81 +++++++++++++++---- .../src/structures/BaseGuildEmoji.js | 36 +++++++++ packages/discord.js/typings/index.d.ts | 18 +++-- 3 files changed, 115 insertions(+), 20 deletions(-) diff --git a/packages/discord.js/src/structures/ApplicationEmoji.js b/packages/discord.js/src/structures/ApplicationEmoji.js index 1688c6512..19411ffa3 100644 --- a/packages/discord.js/src/structures/ApplicationEmoji.js +++ b/packages/discord.js/src/structures/ApplicationEmoji.js @@ -16,37 +16,42 @@ class ApplicationEmoji extends Emoji { */ this.application = application; - /** - * The user who created this emoji - * @type {?User} - */ - this.author = null; - - this.managed = null; - this.requiresColons = null; - this._patch(data); } _patch(data) { if ('name' in data) this.name = data.name; - if (data.user) this.author = this.client.users._add(data.user); + if (data.user) { + /** + * The user who created this emoji + * @type {User} + */ + this.author = this.client.users._add(data.user); + } if ('managed' in data) { /** - * Whether this emoji is managed by an external service - * @type {?boolean} + * Whether this emoji is managed by an external service. Always `false` for application emojis + * @type {false} */ this.managed = data.managed; } if ('require_colons' in data) { /** - * Whether or not this emoji requires colons surrounding it - * @type {?boolean} + * Whether this emoji requires colons surrounding it. Always `true` for application emojis + * @type {true} */ this.requiresColons = data.require_colons; } + + if ('available' in data) { + /** + * Whether this emoji is available. Always `true` for application emojis + * @type {true} + */ + this.available = data.available; + } } /** @@ -107,7 +112,8 @@ class ApplicationEmoji extends Emoji { other.id === this.id && other.name === this.name && other.managed === this.managed && - other.requiresColons === this.requiresColons + other.requiresColons === this.requiresColons && + other.available === this.available ); } @@ -115,4 +121,49 @@ class ApplicationEmoji extends Emoji { } } +/** + * The emoji's name + * @name name + * @memberof ApplicationEmoji + * @instance + * @type {string} + * @readonly + */ + +/** + * Whether the emoji is animated + * @name animated + * @memberof ApplicationEmoji + * @instance + * @type {boolean} + * @readonly + */ + +/** + * Returns a URL for the emoji. + * @method imageURL + * @memberof ApplicationEmoji + * @instance + * @param {EmojiURLOptions} [options] Options for the image URL + * @returns {string} + */ + +/** + * The time the emoji was created at + * @name createdAt + * @memberof ApplicationEmoji + * @instance + * @type {Date} + * @readonly + */ + +/** + * The timestamp the emoji was created at + * @name createdTimestamp + * @memberof ApplicationEmoji + * @instance + * @type {number} + * @readonly + */ + module.exports = ApplicationEmoji; diff --git a/packages/discord.js/src/structures/BaseGuildEmoji.js b/packages/discord.js/src/structures/BaseGuildEmoji.js index 544a2dc55..504c74deb 100644 --- a/packages/discord.js/src/structures/BaseGuildEmoji.js +++ b/packages/discord.js/src/structures/BaseGuildEmoji.js @@ -72,4 +72,40 @@ class BaseGuildEmoji extends Emoji { * @deprecated Use {@link BaseGuildEmoji#imageURL} instead. */ +/** + * The emoji's name + * @name name + * @memberof BaseGuildEmoji + * @instance + * @type {string} + * @readonly + */ + +/** + * Whether or not the emoji is animated + * @name animated + * @memberof BaseGuildEmoji + * @instance + * @type {boolean} + * @readonly + */ + +/** + * The time the emoji was created at. + * @name createdAt + * @memberof BaseGuildEmoji + * @instance + * @type {Date} + * @readonly + */ + +/** + * The timestamp the emoji was created at. + * @name createdTimestamp + * @memberof BaseGuildEmoji + * @instance + * @type {number} + * @readonly + */ + module.exports = BaseGuildEmoji; diff --git a/packages/discord.js/typings/index.d.ts b/packages/discord.js/typings/index.d.ts index 9b6dbd900..b895604c1 100644 --- a/packages/discord.js/typings/index.d.ts +++ b/packages/discord.js/typings/index.d.ts @@ -37,7 +37,7 @@ import { } from '@discordjs/formatters'; import { Awaitable, JSONEncodable } from '@discordjs/util'; import { Collection, ReadonlyCollection } from '@discordjs/collection'; -import { BaseImageURLOptions, ImageURLOptions, RawFile, REST, RESTOptions, EmojiURLOptions } from '@discordjs/rest'; +import { BaseImageURLOptions, EmojiURLOptions, ImageURLOptions, RawFile, REST, RESTOptions } from '@discordjs/rest'; import { WebSocketManager as WSWebSocketManager, IShardingStrategy, @@ -705,7 +705,9 @@ export class BaseGuildEmoji extends Emoji { public get createdTimestamp(): number; public guild: Guild | GuildPreview; public id: Snowflake; - public managed: boolean | null; + public name: string; + public animated: boolean; + public managed: boolean; public requiresColons: boolean | null; } @@ -1512,10 +1514,16 @@ export class ApplicationEmoji extends Emoji { private constructor(client: Client, data: RawApplicationEmojiData, application: ClientApplication); public application: ClientApplication; - public author: User | null; + public author: User; public id: Snowflake; - public managed: boolean | null; - public requiresColons: boolean | null; + public managed: false; + public requiresColons: true; + public name: string; + public animated: boolean; + public available: true; + public get createdAt(): Date; + public get createdTimestamp(): number; + public imageURL(options?: EmojiURLOptions): string; public delete(): Promise; public edit(options: ApplicationEmojiEditOptions): Promise; public equals(other: ApplicationEmoji | unknown): boolean;