feat: add support for localized slash commands (v13 backport) (#7766)

This commit is contained in:
Hyro
2022-04-14 12:47:46 +02:00
committed by GitHub
parent 9e4a900e6d
commit 022e138b9a
6 changed files with 171 additions and 24 deletions

44
typings/index.d.ts vendored
View File

@@ -52,6 +52,8 @@ import {
GatewayVoiceStateUpdateDispatchData,
RESTPostAPIApplicationCommandsJSONBody,
Snowflake,
LocalizationMap,
LocaleString,
} from 'discord-api-types/v9';
import { ChildProcess } from 'node:child_process';
import { EventEmitter } from 'node:events';
@@ -223,12 +225,16 @@ export class ApplicationCommand<PermissionsFetchType = {}> extends Base {
public readonly createdTimestamp: number;
public defaultPermission: boolean;
public description: string;
public descriptionLocalizations: LocalizationMap | null;
public descriptionLocalized: string | null;
public guild: Guild | null;
public guildId: Snowflake | null;
public readonly manager: ApplicationCommandManager;
public id: Snowflake;
public name: string;
public options: ApplicationCommandOption[];
public nameLocalizations: LocalizationMap | null;
public nameLocalized: string | null;
public options: (ApplicationCommandOption & { nameLocalized?: string; descriptionLocalized?: string })[];
public permissions: ApplicationCommandPermissionsManager<
PermissionsFetchType,
PermissionsFetchType,
@@ -241,7 +247,11 @@ export class ApplicationCommand<PermissionsFetchType = {}> extends Base {
public delete(): Promise<ApplicationCommand<PermissionsFetchType>>;
public edit(data: ApplicationCommandData): Promise<ApplicationCommand<PermissionsFetchType>>;
public setName(name: string): Promise<ApplicationCommand<PermissionsFetchType>>;
public setNameLocalizations(nameLocalizations: LocalizationMap): Promise<ApplicationCommand<PermissionsFetchType>>;
public setDescription(description: string): Promise<ApplicationCommand<PermissionsFetchType>>;
public setDescriptionLocalizations(
descriptionLocalizations: LocalizationMap,
): Promise<ApplicationCommand<PermissionsFetchType>>;
public setDefaultPermission(defaultPermission?: boolean): Promise<ApplicationCommand<PermissionsFetchType>>;
public setOptions(options: ApplicationCommandOptionData[]): Promise<ApplicationCommand<PermissionsFetchType>>;
public equals(
@@ -773,7 +783,7 @@ export class AutocompleteInteraction<Cached extends CacheType = CacheType> exten
public inCachedGuild(): this is AutocompleteInteraction<'cached'>;
public inRawGuild(): this is AutocompleteInteraction<'raw'>;
private transformOption(option: APIApplicationCommandOption): CommandInteractionOption;
public respond(options: ApplicationCommandOptionChoice[]): Promise<void>;
public respond(options: ApplicationCommandOptionChoiceData[]): Promise<void>;
}
export class CommandInteractionOptionResolver<Cached extends CacheType = CacheType> {
@@ -830,7 +840,7 @@ export class CommandInteractionOptionResolver<Cached extends CacheType = CacheTy
): NonNullable<CommandInteractionOption<Cached>['member' | 'role' | 'user']> | null;
public getMessage(name: string, required: true): NonNullable<CommandInteractionOption<Cached>['message']>;
public getMessage(name: string, required?: boolean): NonNullable<CommandInteractionOption<Cached>['message']> | null;
public getFocused(getFull: true): ApplicationCommandOptionChoice;
public getFocused(getFull: true): ApplicationCommandOptionChoiceData;
public getFocused(getFull?: boolean): string | number;
public getAttachment(name: string, required: true): NonNullable<CommandInteractionOption<Cached>['attachment']>;
public getAttachment(
@@ -3136,6 +3146,8 @@ export class ChannelManager extends CachedManager<Snowflake, AnyChannel, Channel
public fetch(id: Snowflake, options?: FetchChannelOptions): Promise<AnyChannel | null>;
}
export type FetchGuildApplicationCommandFetchOptions = Omit<FetchApplicationCommandOptions, 'guildId'>;
export class GuildApplicationCommandManager extends ApplicationCommandManager<ApplicationCommand, {}, Guild> {
private constructor(guild: Guild, iterable?: Iterable<RawApplicationCommandData>);
public guild: Guild;
@@ -3145,9 +3157,12 @@ export class GuildApplicationCommandManager extends ApplicationCommandManager<Ap
command: ApplicationCommandResolvable,
data: ApplicationCommandDataResolvable,
): Promise<ApplicationCommand>;
public fetch(id: Snowflake, options?: BaseFetchOptions): Promise<ApplicationCommand>;
public fetch(options: BaseFetchOptions): Promise<Collection<Snowflake, ApplicationCommand>>;
public fetch(id?: undefined, options?: BaseFetchOptions): Promise<Collection<Snowflake, ApplicationCommand>>;
public fetch(id: Snowflake, options?: FetchGuildApplicationCommandFetchOptions): Promise<ApplicationCommand>;
public fetch(options: FetchGuildApplicationCommandFetchOptions): Promise<Collection<Snowflake, ApplicationCommand>>;
public fetch(
id?: undefined,
options?: FetchGuildApplicationCommandFetchOptions,
): Promise<Collection<Snowflake, ApplicationCommand>>;
public set(commands: ApplicationCommandDataResolvable[]): Promise<Collection<Snowflake, ApplicationCommand>>;
}
@@ -3738,6 +3753,7 @@ export interface ApplicationAsset {
export interface BaseApplicationCommandData {
name: string;
nameLocalizations?: LocalizationMap;
defaultPermission?: boolean;
}
@@ -3769,7 +3785,9 @@ export type CommandOptionNonChoiceResolvableType = Exclude<
export interface BaseApplicationCommandOptionsData {
name: string;
nameLocalizations?: LocalizationMap;
description: string;
descriptionLocalizations?: LocalizationMap;
required?: boolean;
autocomplete?: never;
}
@@ -3784,6 +3802,7 @@ export interface MessageApplicationCommandData extends BaseApplicationCommandDat
export interface ChatInputApplicationCommandData extends BaseApplicationCommandData {
description: string;
descriptionLocalizations?: LocalizationMap;
type?: 'CHAT_INPUT' | ApplicationCommandTypes.CHAT_INPUT;
options?: ApplicationCommandOptionData[];
}
@@ -3817,13 +3836,13 @@ export interface ApplicationCommandAutocompleteOption extends Omit<BaseApplicati
export interface ApplicationCommandChoicesData extends Omit<BaseApplicationCommandOptionsData, 'autocomplete'> {
type: CommandOptionChoiceResolvableType;
choices?: ApplicationCommandOptionChoice[];
choices?: ApplicationCommandOptionChoiceData[];
autocomplete?: false;
}
export interface ApplicationCommandChoicesOption extends Omit<BaseApplicationCommandOptionsData, 'autocomplete'> {
type: Exclude<CommandOptionChoiceResolvableType, ApplicationCommandOptionTypes>;
choices?: ApplicationCommandOptionChoice[];
choices?: ApplicationCommandOptionChoiceData[];
autocomplete?: false;
}
@@ -3892,11 +3911,16 @@ export type ApplicationCommandOption =
| ApplicationCommandNumericOption
| ApplicationCommandSubCommand;
export interface ApplicationCommandOptionChoice {
export interface ApplicationCommandOptionChoiceData {
name: string;
nameLocalizations?: LocalizationMap;
value: string | number;
}
export interface ApplicationCommandOptionChoice extends ApplicationCommandOptionChoiceData {
nameLocalized?: string;
}
export type ApplicationCommandType = keyof typeof ApplicationCommandTypes;
export type ApplicationCommandOptionType = keyof typeof ApplicationCommandOptionTypes;
@@ -4558,6 +4582,8 @@ export type ExplicitContentFilterLevel = keyof typeof ExplicitContentFilterLevel
export interface FetchApplicationCommandOptions extends BaseFetchOptions {
guildId?: Snowflake;
locale?: LocaleString;
withLocalizations?: boolean;
}
export interface FetchArchivedThreadOptions {