types(ApplicationSubcommandData): allow autocomplete to be true (#6981)

This commit is contained in:
Suneet Tipirneni
2021-11-16 12:32:25 -05:00
committed by GitHub
parent 06cd16fe97
commit ecc61f3c74
2 changed files with 23 additions and 8 deletions

15
typings/index.d.ts vendored
View File

@@ -3326,6 +3326,7 @@ export interface BaseApplicationCommandOptionsData {
name: string; name: string;
description: string; description: string;
required?: boolean; required?: boolean;
autocomplete?: never;
} }
export interface UserApplicationCommandData extends BaseApplicationCommandData { export interface UserApplicationCommandData extends BaseApplicationCommandData {
@@ -3358,7 +3359,7 @@ export interface ApplicationCommandChannelOption extends BaseApplicationCommandO
channelTypes?: (keyof typeof ChannelTypes)[]; channelTypes?: (keyof typeof ChannelTypes)[];
} }
export interface ApplicationCommandAutocompleteOption extends BaseApplicationCommandOptionsData { export interface ApplicationCommandAutocompleteOption extends Omit<BaseApplicationCommandOptionsData, 'autocomplete'> {
type: type:
| 'STRING' | 'STRING'
| 'NUMBER' | 'NUMBER'
@@ -3369,13 +3370,13 @@ export interface ApplicationCommandAutocompleteOption extends BaseApplicationCom
autocomplete: true; autocomplete: true;
} }
export interface ApplicationCommandChoicesData extends BaseApplicationCommandOptionsData { export interface ApplicationCommandChoicesData extends Omit<BaseApplicationCommandOptionsData, 'autocomplete'> {
type: CommandOptionChoiceResolvableType; type: CommandOptionChoiceResolvableType;
choices?: ApplicationCommandOptionChoice[]; choices?: ApplicationCommandOptionChoice[];
autocomplete?: false; autocomplete?: false;
} }
export interface ApplicationCommandChoicesOption extends BaseApplicationCommandOptionsData { export interface ApplicationCommandChoicesOption extends Omit<BaseApplicationCommandOptionsData, 'autocomplete'> {
type: Exclude<CommandOptionChoiceResolvableType, ApplicationCommandOptionTypes>; type: Exclude<CommandOptionChoiceResolvableType, ApplicationCommandOptionTypes>;
choices?: ApplicationCommandOptionChoice[]; choices?: ApplicationCommandOptionChoice[];
autocomplete?: false; autocomplete?: false;
@@ -3407,7 +3408,13 @@ export interface ApplicationCommandSubGroup extends Omit<BaseApplicationCommandO
export interface ApplicationCommandSubCommandData extends Omit<BaseApplicationCommandOptionsData, 'required'> { export interface ApplicationCommandSubCommandData extends Omit<BaseApplicationCommandOptionsData, 'required'> {
type: 'SUB_COMMAND' | ApplicationCommandOptionTypes.SUB_COMMAND; type: 'SUB_COMMAND' | ApplicationCommandOptionTypes.SUB_COMMAND;
options?: (ApplicationCommandChoicesData | ApplicationCommandNonOptionsData | ApplicationCommandChannelOptionData)[]; options?: (
| ApplicationCommandChoicesData
| ApplicationCommandNonOptionsData
| ApplicationCommandChannelOptionData
| ApplicationCommandAutocompleteOption
| ApplicationCommandNumericOptionData
)[];
} }
export interface ApplicationCommandSubCommand extends Omit<BaseApplicationCommandOptionsData, 'required'> { export interface ApplicationCommandSubCommand extends Omit<BaseApplicationCommandOptionsData, 'required'> {

View File

@@ -79,6 +79,8 @@ import {
User, User,
VoiceChannel, VoiceChannel,
Shard, Shard,
ApplicationCommandAutocompleteOption,
ApplicationCommandNumericOptionData,
} from '.'; } from '.';
import type { ApplicationCommandOptionTypes } from './enums'; import type { ApplicationCommandOptionTypes } from './enums';
@@ -454,8 +456,8 @@ const baseCommandOptionData = {
assertType<ApplicationCommandOptionData>({ assertType<ApplicationCommandOptionData>({
...baseCommandOptionData, ...baseCommandOptionData,
type: 'STRING', type: 'STRING',
// @ts-expect-error
autocomplete: true, autocomplete: true,
// @ts-expect-error
choices: [], choices: [],
}); });
@@ -475,16 +477,16 @@ assertType<ApplicationCommandOptionData>({
assertType<ApplicationCommandOptionData>({ assertType<ApplicationCommandOptionData>({
...baseCommandOptionData, ...baseCommandOptionData,
type: 'NUMBER', type: 'NUMBER',
// @ts-expect-error
autocomplete: true, autocomplete: true,
// @ts-expect-error
choices: [], choices: [],
}); });
assertType<ApplicationCommandOptionData>({ assertType<ApplicationCommandOptionData>({
...baseCommandOptionData, ...baseCommandOptionData,
type: 'INTEGER', type: 'INTEGER',
// @ts-expect-error
autocomplete: true, autocomplete: true,
// @ts-expect-error
choices: [], choices: [],
}); });
@@ -893,7 +895,13 @@ declare const applicationSubCommandData: ApplicationCommandSubCommandData;
// Check that only subcommands can have no subcommand or subcommand group sub-options. // Check that only subcommands can have no subcommand or subcommand group sub-options.
assertType< assertType<
| (ApplicationCommandChoicesData | ApplicationCommandNonOptionsData | ApplicationCommandChannelOptionData)[] | (
| ApplicationCommandChoicesData
| ApplicationCommandNonOptionsData
| ApplicationCommandChannelOptionData
| ApplicationCommandAutocompleteOption
| ApplicationCommandNumericOptionData
)[]
| undefined | undefined
>(applicationSubCommandData.options); >(applicationSubCommandData.options);
} }