feat: application emojis (#10399)

* feat: application emojis

* chore: requested changes

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
Danial Raza
2024-08-20 11:33:25 +02:00
committed by GitHub
parent 45f7e1a2e8
commit 5d92525596
9 changed files with 402 additions and 2 deletions

View File

@@ -191,6 +191,7 @@ import {
RawAnonymousGuildData,
RawApplicationCommandData,
RawApplicationData,
RawApplicationEmojiData,
RawBaseGuildData,
RawChannelData,
RawClientApplicationData,
@@ -1061,6 +1062,7 @@ export class ClientApplication extends Application {
public botRequireCodeGrant: boolean | null;
public bot: User | null;
public commands: ApplicationCommandManager;
public emojis: ApplicationEmojiManager;
public entitlements: EntitlementManager;
public guildId: Snowflake | null;
public get guild(): Guild | null;
@@ -1342,6 +1344,41 @@ export class Emoji extends Base {
public toString(): string;
}
export interface ApplicationEmojiCreateOptions {
attachment: BufferResolvable | Base64Resolvable;
name: string;
}
export interface ApplicationEmojiEditOptions {
name?: string;
}
export class ApplicationEmoji extends Emoji {
private constructor(client: Client<true>, data: RawApplicationEmojiData, application: ClientApplication);
public application: ClientApplication;
public author: User | null;
public id: Snowflake;
public managed: boolean | null;
public requiresColons: boolean | null;
public delete(): Promise<ApplicationEmoji>;
public edit(options: ApplicationEmojiEditOptions): Promise<ApplicationEmoji>;
public equals(other: ApplicationEmoji | unknown): boolean;
public fetchAuthor(): Promise<User>;
public setName(name: string): Promise<ApplicationEmoji>;
}
export class ApplicationEmojiManager extends CachedManager<Snowflake, ApplicationEmoji, EmojiResolvable> {
private constructor(application: ClientApplication, iterable?: Iterable<RawApplicationEmojiData>);
public application: ClientApplication;
public create(options: ApplicationEmojiCreateOptions): Promise<ApplicationEmoji>;
public fetch(id: Snowflake, options?: BaseFetchOptions): Promise<ApplicationEmoji>;
public fetch(id?: undefined, options?: BaseFetchOptions): Promise<Collection<Snowflake, ApplicationEmoji>>;
public fetchAuthor(emoji: EmojiResolvable): Promise<User>;
public delete(emoji: EmojiResolvable): Promise<void>;
public edit(emoji: EmojiResolvable, options: ApplicationEmojiEditOptions): Promise<ApplicationEmoji>;
}
export class Entitlement extends Base {
private constructor(client: Client<true>, data: APIEntitlement);
public id: Snowflake;

View File

@@ -206,6 +206,8 @@ import {
ChannelSelectMenuComponent,
MentionableSelectMenuComponent,
Poll,
ApplicationEmoji,
ApplicationEmojiManager,
} from '.';
import { expectAssignable, expectDeprecated, expectNotAssignable, expectNotType, expectType } from 'tsd';
import type { ContextMenuCommandBuilder, SlashCommandBuilder } from '@discordjs/builders';
@@ -1695,6 +1697,11 @@ expectType<Promise<Collection<Snowflake, GuildEmoji>>>(guildEmojiManager.fetch()
expectType<Promise<Collection<Snowflake, GuildEmoji>>>(guildEmojiManager.fetch(undefined, {}));
expectType<Promise<GuildEmoji>>(guildEmojiManager.fetch('0'));
declare const applicationEmojiManager: ApplicationEmojiManager;
expectType<Promise<Collection<Snowflake, ApplicationEmoji>>>(applicationEmojiManager.fetch());
expectType<Promise<Collection<Snowflake, ApplicationEmoji>>>(applicationEmojiManager.fetch(undefined, {}));
expectType<Promise<ApplicationEmoji>>(applicationEmojiManager.fetch('0'));
declare const guildBanManager: GuildBanManager;
{
expectType<Promise<GuildBan>>(guildBanManager.fetch('1234567890'));

View File

@@ -102,6 +102,7 @@ export type RawEmojiData =
| RawReactionEmojiData
| GatewayActivityEmoji
| Omit<Partial<APIPartialEmoji>, 'animated'>;
export type RawApplicationEmojiData = APIEmoji;
export type RawGuildEmojiData = APIEmoji;
export type RawReactionEmojiData = APIEmoji | APIPartialEmoji;