fix(Emoji): remove incorrect nullables, add ApplicationEmoji#available (#10913)

* types: remove unintended nullables from app and base guild emojis

* feat: add ApplicationEmoji#available

* types(BaseGuildEmoji): fix incorrect JSDoc type for BaseGuildEmoji#name

Co-authored-by: Qjuh <76154676+Qjuh@users.noreply.github.com>

* types(Emoji): switch from # to . for property deprecation links

Co-authored-by: Qjuh <76154676+Qjuh@users.noreply.github.com>

* fix: remove default nulls in app emoji constructor on non-nullables

* types(Emoji): replace raw data type pre 78d512c

* types(Emoji): switch to ImageURLOptions for imageURL()

Re-applies changes from #10613

Co-authored-by: Qjuh <76154676+Qjuh@users.noreply.github.com>

* types(Emoji): remove deprecated `url` props types and descriptions

Added by mistake in PR that used to target v14

Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>

* refactor(Emoji): wording and formatting changes to prop descriptions

Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>

* refactor(Emoji): missed wording and formatting change to prop descriptions

Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>

* fix(Emoji)!: remove non present Emoji#url from typings

* fix(Emoji): re-apply emoji url types from 2c35084

---------

Co-authored-by: Qjuh <76154676+Qjuh@users.noreply.github.com>
Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
Amgelo563
2025-05-30 14:06:06 -05:00
committed by GitHub
parent 762bbc6525
commit ef2c1bfa77
3 changed files with 114 additions and 21 deletions

View File

@@ -16,37 +16,42 @@ class ApplicationEmoji extends Emoji {
*/ */
this.application = application; this.application = application;
/**
* The user who created this emoji
* @type {?User}
*/
this.author = null;
this.managed = null;
this.requiresColons = null;
this._patch(data); this._patch(data);
} }
_patch(data) { _patch(data) {
if ('name' in data) this.name = data.name; 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) { if ('managed' in data) {
/** /**
* Whether this emoji is managed by an external service * Whether this emoji is managed by an external service. Always `false` for application emojis
* @type {?boolean} * @type {false}
*/ */
this.managed = data.managed; this.managed = data.managed;
} }
if ('require_colons' in data) { if ('require_colons' in data) {
/** /**
* Whether or not this emoji requires colons surrounding it * Whether this emoji requires colons surrounding it. Always `true` for application emojis
* @type {?boolean} * @type {true}
*/ */
this.requiresColons = data.require_colons; 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.id === this.id &&
other.name === this.name && other.name === this.name &&
other.managed === this.managed && 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
*/
exports.ApplicationEmoji = ApplicationEmoji; exports.ApplicationEmoji = ApplicationEmoji;

View File

@@ -62,4 +62,40 @@ class BaseGuildEmoji extends Emoji {
* @returns {string} * @returns {string}
*/ */
/**
* 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
*/
exports.BaseGuildEmoji = BaseGuildEmoji; exports.BaseGuildEmoji = BaseGuildEmoji;

View File

@@ -591,13 +591,14 @@ export abstract class BaseGuild extends Base {
export class BaseGuildEmoji extends Emoji { export class BaseGuildEmoji extends Emoji {
protected constructor(client: Client<true>, data: APIEmoji, guild: Guild | GuildPreview); protected constructor(client: Client<true>, data: APIEmoji, guild: Guild | GuildPreview);
public imageURL(options?: EmojiURLOptions): string; public imageURL(options?: EmojiURLOptions): string;
public get url(): string;
public available: boolean | null; public available: boolean | null;
public get createdAt(): Date; public get createdAt(): Date;
public get createdTimestamp(): number; public get createdTimestamp(): number;
public guild: Guild | GuildPreview; public guild: Guild | GuildPreview;
public id: Snowflake; public id: Snowflake;
public managed: boolean | null; public name: string;
public animated: boolean;
public managed: boolean;
public requiresColons: boolean | null; public requiresColons: boolean | null;
} }
@@ -1268,7 +1269,6 @@ export class Emoji extends Base {
public name: string | null; public name: string | null;
public get identifier(): string; public get identifier(): string;
public imageURL(options?: EmojiURLOptions): string | null; public imageURL(options?: EmojiURLOptions): string | null;
public get url(): string | null;
public toJSON(): unknown; public toJSON(): unknown;
public toString(): string; public toString(): string;
} }
@@ -1286,10 +1286,16 @@ export class ApplicationEmoji extends Emoji {
private constructor(client: Client<true>, data: APIEmoji, application: ClientApplication); private constructor(client: Client<true>, data: APIEmoji, application: ClientApplication);
public application: ClientApplication; public application: ClientApplication;
public author: User | null; public author: User;
public id: Snowflake; public id: Snowflake;
public managed: boolean | null; public managed: false;
public requiresColons: boolean | null; 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<ApplicationEmoji>; public delete(): Promise<ApplicationEmoji>;
public edit(options: ApplicationEmojiEditOptions): Promise<ApplicationEmoji>; public edit(options: ApplicationEmojiEditOptions): Promise<ApplicationEmoji>;
public equals(other: ApplicationEmoji | unknown): boolean; public equals(other: ApplicationEmoji | unknown): boolean;