mirror of
https://github.com/discordjs/discord-api-types.git
synced 2026-05-31 07:50:09 +00:00
fix: Ensure autocomplete option values resolve to string for numerical types (#1198)
* fix: string values for autocomplete * fix: default types * test: add tests
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import type { InteractionType } from '../../responses.ts';
|
||||
import type {
|
||||
APIApplicationCommandOptionBase,
|
||||
APIApplicationCommandOptionWithAutocompleteOrChoicesWrapper,
|
||||
@@ -22,7 +23,10 @@ export type APIApplicationCommandIntegerOption = APIApplicationCommandOptionWith
|
||||
APIApplicationCommandOptionChoice<number>
|
||||
>;
|
||||
|
||||
export interface APIApplicationCommandInteractionDataIntegerOption
|
||||
extends APIInteractionDataOptionBase<ApplicationCommandOptionType.Integer, number> {
|
||||
export interface APIApplicationCommandInteractionDataIntegerOption<Type extends InteractionType = InteractionType>
|
||||
extends APIInteractionDataOptionBase<
|
||||
ApplicationCommandOptionType.Integer,
|
||||
Type extends InteractionType.ApplicationCommandAutocomplete ? string : number
|
||||
> {
|
||||
focused?: boolean;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type { InteractionType } from '../../responses.ts';
|
||||
import type {
|
||||
APIApplicationCommandOptionBase,
|
||||
APIApplicationCommandOptionWithAutocompleteOrChoicesWrapper,
|
||||
@@ -22,7 +23,10 @@ export type APIApplicationCommandNumberOption = APIApplicationCommandOptionWithA
|
||||
APIApplicationCommandOptionChoice<number>
|
||||
>;
|
||||
|
||||
export interface APIApplicationCommandInteractionDataNumberOption
|
||||
extends APIInteractionDataOptionBase<ApplicationCommandOptionType.Number, number> {
|
||||
export interface APIApplicationCommandInteractionDataNumberOption<Type extends InteractionType = InteractionType>
|
||||
extends APIInteractionDataOptionBase<
|
||||
ApplicationCommandOptionType.Number,
|
||||
Type extends InteractionType.ApplicationCommandAutocomplete ? string : number
|
||||
> {
|
||||
focused?: boolean;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type { InteractionType } from '../../responses.ts';
|
||||
import type { APIApplicationCommandBasicOption, APIApplicationCommandInteractionDataBasicOption } from '../chatInput.ts';
|
||||
import type { APIApplicationCommandOptionBase } from './base.ts';
|
||||
import type { ApplicationCommandOptionType } from './shared.ts';
|
||||
@@ -7,8 +8,8 @@ export interface APIApplicationCommandSubcommandOption
|
||||
options?: APIApplicationCommandBasicOption[];
|
||||
}
|
||||
|
||||
export interface APIApplicationCommandInteractionDataSubcommandOption {
|
||||
export interface APIApplicationCommandInteractionDataSubcommandOption<Type extends InteractionType = InteractionType> {
|
||||
name: string;
|
||||
type: ApplicationCommandOptionType.Subcommand;
|
||||
options?: APIApplicationCommandInteractionDataBasicOption[];
|
||||
options?: APIApplicationCommandInteractionDataBasicOption<Type>[];
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type { InteractionType } from '../../responses.ts';
|
||||
import type { APIApplicationCommandOptionBase } from './base.ts';
|
||||
import type { ApplicationCommandOptionType } from './shared.ts';
|
||||
import type {
|
||||
@@ -10,8 +11,10 @@ export interface APIApplicationCommandSubcommandGroupOption
|
||||
options?: APIApplicationCommandSubcommandOption[];
|
||||
}
|
||||
|
||||
export interface APIApplicationCommandInteractionDataSubcommandGroupOption {
|
||||
export interface APIApplicationCommandInteractionDataSubcommandGroupOption<
|
||||
Type extends InteractionType = InteractionType,
|
||||
> {
|
||||
name: string;
|
||||
type: ApplicationCommandOptionType.SubcommandGroup;
|
||||
options: APIApplicationCommandInteractionDataSubcommandOption[];
|
||||
options: APIApplicationCommandInteractionDataSubcommandOption<Type>[];
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { APIInteractionDataResolved } from '../../mod.ts';
|
||||
import type { APIInteractionDataResolved, InteractionType } from '../../mod.ts';
|
||||
import type { APIApplicationCommandInteractionWrapper, ApplicationCommandType } from '../applicationCommands.ts';
|
||||
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../base.ts';
|
||||
import type {
|
||||
@@ -86,18 +86,18 @@ export type APIApplicationCommandOption =
|
||||
/**
|
||||
* https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-interaction-data-option-structure
|
||||
*/
|
||||
export type APIApplicationCommandInteractionDataOption =
|
||||
| APIApplicationCommandInteractionDataBasicOption
|
||||
| APIApplicationCommandInteractionDataSubcommandGroupOption
|
||||
| APIApplicationCommandInteractionDataSubcommandOption;
|
||||
export type APIApplicationCommandInteractionDataOption<Type extends InteractionType = InteractionType> =
|
||||
| APIApplicationCommandInteractionDataBasicOption<Type>
|
||||
| APIApplicationCommandInteractionDataSubcommandGroupOption<Type>
|
||||
| APIApplicationCommandInteractionDataSubcommandOption<Type>;
|
||||
|
||||
export type APIApplicationCommandInteractionDataBasicOption =
|
||||
export type APIApplicationCommandInteractionDataBasicOption<Type extends InteractionType = InteractionType> =
|
||||
| APIApplicationCommandInteractionDataAttachmentOption
|
||||
| APIApplicationCommandInteractionDataBooleanOption
|
||||
| APIApplicationCommandInteractionDataChannelOption
|
||||
| APIApplicationCommandInteractionDataIntegerOption
|
||||
| APIApplicationCommandInteractionDataIntegerOption<Type>
|
||||
| APIApplicationCommandInteractionDataMentionableOption
|
||||
| APIApplicationCommandInteractionDataNumberOption
|
||||
| APIApplicationCommandInteractionDataNumberOption<Type>
|
||||
| APIApplicationCommandInteractionDataRoleOption
|
||||
| APIApplicationCommandInteractionDataStringOption
|
||||
| APIApplicationCommandInteractionDataUserOption;
|
||||
@@ -107,7 +107,16 @@ export type APIApplicationCommandInteractionDataBasicOption =
|
||||
*/
|
||||
export interface APIChatInputApplicationCommandInteractionData
|
||||
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.ChatInput> {
|
||||
options?: APIApplicationCommandInteractionDataOption[];
|
||||
options?: APIApplicationCommandInteractionDataOption<InteractionType.ApplicationCommand>[];
|
||||
resolved?: APIInteractionDataResolved;
|
||||
}
|
||||
|
||||
/**
|
||||
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
|
||||
*/
|
||||
export interface APIAutocompleteApplicationCommandInteractionData
|
||||
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.ChatInput> {
|
||||
options?: APIApplicationCommandInteractionDataOption<InteractionType.ApplicationCommandAutocomplete>[];
|
||||
resolved?: APIInteractionDataResolved;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type {
|
||||
APIBaseInteraction,
|
||||
APIChatInputApplicationCommandInteractionData,
|
||||
APIAutocompleteApplicationCommandInteractionData,
|
||||
APIDMInteractionWrapper,
|
||||
APIGuildInteractionWrapper,
|
||||
InteractionType,
|
||||
@@ -8,13 +8,13 @@ import type {
|
||||
|
||||
export type APIApplicationCommandAutocompleteInteraction = APIBaseInteraction<
|
||||
InteractionType.ApplicationCommandAutocomplete,
|
||||
APIChatInputApplicationCommandInteractionData
|
||||
APIAutocompleteApplicationCommandInteractionData
|
||||
> &
|
||||
Required<
|
||||
Pick<
|
||||
APIBaseInteraction<
|
||||
InteractionType.ApplicationCommandAutocomplete,
|
||||
Required<Pick<APIChatInputApplicationCommandInteractionData, 'options'>>
|
||||
Required<Pick<APIAutocompleteApplicationCommandInteractionData, 'options'>>
|
||||
>,
|
||||
'data'
|
||||
>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type { InteractionType } from '../../responses.ts';
|
||||
import type {
|
||||
APIApplicationCommandOptionBase,
|
||||
APIApplicationCommandOptionWithAutocompleteOrChoicesWrapper,
|
||||
@@ -22,7 +23,10 @@ export type APIApplicationCommandIntegerOption = APIApplicationCommandOptionWith
|
||||
APIApplicationCommandOptionChoice<number>
|
||||
>;
|
||||
|
||||
export interface APIApplicationCommandInteractionDataIntegerOption
|
||||
extends APIInteractionDataOptionBase<ApplicationCommandOptionType.Integer, number> {
|
||||
export interface APIApplicationCommandInteractionDataIntegerOption<Type extends InteractionType = InteractionType>
|
||||
extends APIInteractionDataOptionBase<
|
||||
ApplicationCommandOptionType.Integer,
|
||||
Type extends InteractionType.ApplicationCommandAutocomplete ? string : number
|
||||
> {
|
||||
focused?: boolean;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type { InteractionType } from '../../responses.ts';
|
||||
import type {
|
||||
APIApplicationCommandOptionBase,
|
||||
APIApplicationCommandOptionWithAutocompleteOrChoicesWrapper,
|
||||
@@ -22,7 +23,10 @@ export type APIApplicationCommandNumberOption = APIApplicationCommandOptionWithA
|
||||
APIApplicationCommandOptionChoice<number>
|
||||
>;
|
||||
|
||||
export interface APIApplicationCommandInteractionDataNumberOption
|
||||
extends APIInteractionDataOptionBase<ApplicationCommandOptionType.Number, number> {
|
||||
export interface APIApplicationCommandInteractionDataNumberOption<Type extends InteractionType = InteractionType>
|
||||
extends APIInteractionDataOptionBase<
|
||||
ApplicationCommandOptionType.Number,
|
||||
Type extends InteractionType.ApplicationCommandAutocomplete ? string : number
|
||||
> {
|
||||
focused?: boolean;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type { InteractionType } from '../../responses.ts';
|
||||
import type { APIApplicationCommandBasicOption, APIApplicationCommandInteractionDataBasicOption } from '../chatInput.ts';
|
||||
import type { APIApplicationCommandOptionBase } from './base.ts';
|
||||
import type { ApplicationCommandOptionType } from './shared.ts';
|
||||
@@ -7,8 +8,8 @@ export interface APIApplicationCommandSubcommandOption
|
||||
options?: APIApplicationCommandBasicOption[];
|
||||
}
|
||||
|
||||
export interface APIApplicationCommandInteractionDataSubcommandOption {
|
||||
export interface APIApplicationCommandInteractionDataSubcommandOption<Type extends InteractionType = InteractionType> {
|
||||
name: string;
|
||||
type: ApplicationCommandOptionType.Subcommand;
|
||||
options?: APIApplicationCommandInteractionDataBasicOption[];
|
||||
options?: APIApplicationCommandInteractionDataBasicOption<Type>[];
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type { InteractionType } from '../../responses.ts';
|
||||
import type { APIApplicationCommandOptionBase } from './base.ts';
|
||||
import type { ApplicationCommandOptionType } from './shared.ts';
|
||||
import type {
|
||||
@@ -10,8 +11,10 @@ export interface APIApplicationCommandSubcommandGroupOption
|
||||
options?: APIApplicationCommandSubcommandOption[];
|
||||
}
|
||||
|
||||
export interface APIApplicationCommandInteractionDataSubcommandGroupOption {
|
||||
export interface APIApplicationCommandInteractionDataSubcommandGroupOption<
|
||||
Type extends InteractionType = InteractionType,
|
||||
> {
|
||||
name: string;
|
||||
type: ApplicationCommandOptionType.SubcommandGroup;
|
||||
options: APIApplicationCommandInteractionDataSubcommandOption[];
|
||||
options: APIApplicationCommandInteractionDataSubcommandOption<Type>[];
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { APIInteractionDataResolved } from '../../mod.ts';
|
||||
import type { APIInteractionDataResolved, InteractionType } from '../../mod.ts';
|
||||
import type { APIApplicationCommandInteractionWrapper, ApplicationCommandType } from '../applicationCommands.ts';
|
||||
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../base.ts';
|
||||
import type {
|
||||
@@ -86,18 +86,18 @@ export type APIApplicationCommandOption =
|
||||
/**
|
||||
* https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-interaction-data-option-structure
|
||||
*/
|
||||
export type APIApplicationCommandInteractionDataOption =
|
||||
| APIApplicationCommandInteractionDataBasicOption
|
||||
| APIApplicationCommandInteractionDataSubcommandGroupOption
|
||||
| APIApplicationCommandInteractionDataSubcommandOption;
|
||||
export type APIApplicationCommandInteractionDataOption<Type extends InteractionType = InteractionType> =
|
||||
| APIApplicationCommandInteractionDataBasicOption<Type>
|
||||
| APIApplicationCommandInteractionDataSubcommandGroupOption<Type>
|
||||
| APIApplicationCommandInteractionDataSubcommandOption<Type>;
|
||||
|
||||
export type APIApplicationCommandInteractionDataBasicOption =
|
||||
export type APIApplicationCommandInteractionDataBasicOption<Type extends InteractionType = InteractionType> =
|
||||
| APIApplicationCommandInteractionDataAttachmentOption
|
||||
| APIApplicationCommandInteractionDataBooleanOption
|
||||
| APIApplicationCommandInteractionDataChannelOption
|
||||
| APIApplicationCommandInteractionDataIntegerOption
|
||||
| APIApplicationCommandInteractionDataIntegerOption<Type>
|
||||
| APIApplicationCommandInteractionDataMentionableOption
|
||||
| APIApplicationCommandInteractionDataNumberOption
|
||||
| APIApplicationCommandInteractionDataNumberOption<Type>
|
||||
| APIApplicationCommandInteractionDataRoleOption
|
||||
| APIApplicationCommandInteractionDataStringOption
|
||||
| APIApplicationCommandInteractionDataUserOption;
|
||||
@@ -107,7 +107,16 @@ export type APIApplicationCommandInteractionDataBasicOption =
|
||||
*/
|
||||
export interface APIChatInputApplicationCommandInteractionData
|
||||
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.ChatInput> {
|
||||
options?: APIApplicationCommandInteractionDataOption[];
|
||||
options?: APIApplicationCommandInteractionDataOption<InteractionType.ApplicationCommand>[];
|
||||
resolved?: APIInteractionDataResolved;
|
||||
}
|
||||
|
||||
/**
|
||||
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
|
||||
*/
|
||||
export interface APIAutocompleteApplicationCommandInteractionData
|
||||
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.ChatInput> {
|
||||
options?: APIApplicationCommandInteractionDataOption<InteractionType.ApplicationCommandAutocomplete>[];
|
||||
resolved?: APIInteractionDataResolved;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type {
|
||||
APIBaseInteraction,
|
||||
APIChatInputApplicationCommandInteractionData,
|
||||
APIAutocompleteApplicationCommandInteractionData,
|
||||
APIDMInteractionWrapper,
|
||||
APIGuildInteractionWrapper,
|
||||
InteractionType,
|
||||
@@ -8,13 +8,13 @@ import type {
|
||||
|
||||
export type APIApplicationCommandAutocompleteInteraction = APIBaseInteraction<
|
||||
InteractionType.ApplicationCommandAutocomplete,
|
||||
APIChatInputApplicationCommandInteractionData
|
||||
APIAutocompleteApplicationCommandInteractionData
|
||||
> &
|
||||
Required<
|
||||
Pick<
|
||||
APIBaseInteraction<
|
||||
InteractionType.ApplicationCommandAutocomplete,
|
||||
Required<Pick<APIChatInputApplicationCommandInteractionData, 'options'>>
|
||||
Required<Pick<APIAutocompleteApplicationCommandInteractionData, 'options'>>
|
||||
>,
|
||||
'data'
|
||||
>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type { InteractionType } from '../../responses';
|
||||
import type {
|
||||
APIApplicationCommandOptionBase,
|
||||
APIApplicationCommandOptionWithAutocompleteOrChoicesWrapper,
|
||||
@@ -22,7 +23,10 @@ export type APIApplicationCommandIntegerOption = APIApplicationCommandOptionWith
|
||||
APIApplicationCommandOptionChoice<number>
|
||||
>;
|
||||
|
||||
export interface APIApplicationCommandInteractionDataIntegerOption
|
||||
extends APIInteractionDataOptionBase<ApplicationCommandOptionType.Integer, number> {
|
||||
export interface APIApplicationCommandInteractionDataIntegerOption<Type extends InteractionType = InteractionType>
|
||||
extends APIInteractionDataOptionBase<
|
||||
ApplicationCommandOptionType.Integer,
|
||||
Type extends InteractionType.ApplicationCommandAutocomplete ? string : number
|
||||
> {
|
||||
focused?: boolean;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type { InteractionType } from '../../responses';
|
||||
import type {
|
||||
APIApplicationCommandOptionBase,
|
||||
APIApplicationCommandOptionWithAutocompleteOrChoicesWrapper,
|
||||
@@ -22,7 +23,10 @@ export type APIApplicationCommandNumberOption = APIApplicationCommandOptionWithA
|
||||
APIApplicationCommandOptionChoice<number>
|
||||
>;
|
||||
|
||||
export interface APIApplicationCommandInteractionDataNumberOption
|
||||
extends APIInteractionDataOptionBase<ApplicationCommandOptionType.Number, number> {
|
||||
export interface APIApplicationCommandInteractionDataNumberOption<Type extends InteractionType = InteractionType>
|
||||
extends APIInteractionDataOptionBase<
|
||||
ApplicationCommandOptionType.Number,
|
||||
Type extends InteractionType.ApplicationCommandAutocomplete ? string : number
|
||||
> {
|
||||
focused?: boolean;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type { InteractionType } from '../../responses';
|
||||
import type { APIApplicationCommandBasicOption, APIApplicationCommandInteractionDataBasicOption } from '../chatInput';
|
||||
import type { APIApplicationCommandOptionBase } from './base';
|
||||
import type { ApplicationCommandOptionType } from './shared';
|
||||
@@ -7,8 +8,8 @@ export interface APIApplicationCommandSubcommandOption
|
||||
options?: APIApplicationCommandBasicOption[];
|
||||
}
|
||||
|
||||
export interface APIApplicationCommandInteractionDataSubcommandOption {
|
||||
export interface APIApplicationCommandInteractionDataSubcommandOption<Type extends InteractionType = InteractionType> {
|
||||
name: string;
|
||||
type: ApplicationCommandOptionType.Subcommand;
|
||||
options?: APIApplicationCommandInteractionDataBasicOption[];
|
||||
options?: APIApplicationCommandInteractionDataBasicOption<Type>[];
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type { InteractionType } from '../../responses';
|
||||
import type { APIApplicationCommandOptionBase } from './base';
|
||||
import type { ApplicationCommandOptionType } from './shared';
|
||||
import type {
|
||||
@@ -10,8 +11,10 @@ export interface APIApplicationCommandSubcommandGroupOption
|
||||
options?: APIApplicationCommandSubcommandOption[];
|
||||
}
|
||||
|
||||
export interface APIApplicationCommandInteractionDataSubcommandGroupOption {
|
||||
export interface APIApplicationCommandInteractionDataSubcommandGroupOption<
|
||||
Type extends InteractionType = InteractionType,
|
||||
> {
|
||||
name: string;
|
||||
type: ApplicationCommandOptionType.SubcommandGroup;
|
||||
options: APIApplicationCommandInteractionDataSubcommandOption[];
|
||||
options: APIApplicationCommandInteractionDataSubcommandOption<Type>[];
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { APIInteractionDataResolved } from '../../index';
|
||||
import type { APIInteractionDataResolved, InteractionType } from '../../index';
|
||||
import type { APIApplicationCommandInteractionWrapper, ApplicationCommandType } from '../applicationCommands';
|
||||
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../base';
|
||||
import type {
|
||||
@@ -86,18 +86,18 @@ export type APIApplicationCommandOption =
|
||||
/**
|
||||
* https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-interaction-data-option-structure
|
||||
*/
|
||||
export type APIApplicationCommandInteractionDataOption =
|
||||
| APIApplicationCommandInteractionDataBasicOption
|
||||
| APIApplicationCommandInteractionDataSubcommandGroupOption
|
||||
| APIApplicationCommandInteractionDataSubcommandOption;
|
||||
export type APIApplicationCommandInteractionDataOption<Type extends InteractionType = InteractionType> =
|
||||
| APIApplicationCommandInteractionDataBasicOption<Type>
|
||||
| APIApplicationCommandInteractionDataSubcommandGroupOption<Type>
|
||||
| APIApplicationCommandInteractionDataSubcommandOption<Type>;
|
||||
|
||||
export type APIApplicationCommandInteractionDataBasicOption =
|
||||
export type APIApplicationCommandInteractionDataBasicOption<Type extends InteractionType = InteractionType> =
|
||||
| APIApplicationCommandInteractionDataAttachmentOption
|
||||
| APIApplicationCommandInteractionDataBooleanOption
|
||||
| APIApplicationCommandInteractionDataChannelOption
|
||||
| APIApplicationCommandInteractionDataIntegerOption
|
||||
| APIApplicationCommandInteractionDataIntegerOption<Type>
|
||||
| APIApplicationCommandInteractionDataMentionableOption
|
||||
| APIApplicationCommandInteractionDataNumberOption
|
||||
| APIApplicationCommandInteractionDataNumberOption<Type>
|
||||
| APIApplicationCommandInteractionDataRoleOption
|
||||
| APIApplicationCommandInteractionDataStringOption
|
||||
| APIApplicationCommandInteractionDataUserOption;
|
||||
@@ -107,7 +107,16 @@ export type APIApplicationCommandInteractionDataBasicOption =
|
||||
*/
|
||||
export interface APIChatInputApplicationCommandInteractionData
|
||||
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.ChatInput> {
|
||||
options?: APIApplicationCommandInteractionDataOption[];
|
||||
options?: APIApplicationCommandInteractionDataOption<InteractionType.ApplicationCommand>[];
|
||||
resolved?: APIInteractionDataResolved;
|
||||
}
|
||||
|
||||
/**
|
||||
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
|
||||
*/
|
||||
export interface APIAutocompleteApplicationCommandInteractionData
|
||||
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.ChatInput> {
|
||||
options?: APIApplicationCommandInteractionDataOption<InteractionType.ApplicationCommandAutocomplete>[];
|
||||
resolved?: APIInteractionDataResolved;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type {
|
||||
APIBaseInteraction,
|
||||
APIChatInputApplicationCommandInteractionData,
|
||||
APIAutocompleteApplicationCommandInteractionData,
|
||||
APIDMInteractionWrapper,
|
||||
APIGuildInteractionWrapper,
|
||||
InteractionType,
|
||||
@@ -8,13 +8,13 @@ import type {
|
||||
|
||||
export type APIApplicationCommandAutocompleteInteraction = APIBaseInteraction<
|
||||
InteractionType.ApplicationCommandAutocomplete,
|
||||
APIChatInputApplicationCommandInteractionData
|
||||
APIAutocompleteApplicationCommandInteractionData
|
||||
> &
|
||||
Required<
|
||||
Pick<
|
||||
APIBaseInteraction<
|
||||
InteractionType.ApplicationCommandAutocomplete,
|
||||
Required<Pick<APIChatInputApplicationCommandInteractionData, 'options'>>
|
||||
Required<Pick<APIAutocompleteApplicationCommandInteractionData, 'options'>>
|
||||
>,
|
||||
'data'
|
||||
>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type { InteractionType } from '../../responses';
|
||||
import type {
|
||||
APIApplicationCommandOptionBase,
|
||||
APIApplicationCommandOptionWithAutocompleteOrChoicesWrapper,
|
||||
@@ -22,7 +23,10 @@ export type APIApplicationCommandIntegerOption = APIApplicationCommandOptionWith
|
||||
APIApplicationCommandOptionChoice<number>
|
||||
>;
|
||||
|
||||
export interface APIApplicationCommandInteractionDataIntegerOption
|
||||
extends APIInteractionDataOptionBase<ApplicationCommandOptionType.Integer, number> {
|
||||
export interface APIApplicationCommandInteractionDataIntegerOption<Type extends InteractionType = InteractionType>
|
||||
extends APIInteractionDataOptionBase<
|
||||
ApplicationCommandOptionType.Integer,
|
||||
Type extends InteractionType.ApplicationCommandAutocomplete ? string : number
|
||||
> {
|
||||
focused?: boolean;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type { InteractionType } from '../../responses';
|
||||
import type {
|
||||
APIApplicationCommandOptionBase,
|
||||
APIApplicationCommandOptionWithAutocompleteOrChoicesWrapper,
|
||||
@@ -22,7 +23,10 @@ export type APIApplicationCommandNumberOption = APIApplicationCommandOptionWithA
|
||||
APIApplicationCommandOptionChoice<number>
|
||||
>;
|
||||
|
||||
export interface APIApplicationCommandInteractionDataNumberOption
|
||||
extends APIInteractionDataOptionBase<ApplicationCommandOptionType.Number, number> {
|
||||
export interface APIApplicationCommandInteractionDataNumberOption<Type extends InteractionType = InteractionType>
|
||||
extends APIInteractionDataOptionBase<
|
||||
ApplicationCommandOptionType.Number,
|
||||
Type extends InteractionType.ApplicationCommandAutocomplete ? string : number
|
||||
> {
|
||||
focused?: boolean;
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type { InteractionType } from '../../responses';
|
||||
import type { APIApplicationCommandBasicOption, APIApplicationCommandInteractionDataBasicOption } from '../chatInput';
|
||||
import type { APIApplicationCommandOptionBase } from './base';
|
||||
import type { ApplicationCommandOptionType } from './shared';
|
||||
@@ -7,8 +8,8 @@ export interface APIApplicationCommandSubcommandOption
|
||||
options?: APIApplicationCommandBasicOption[];
|
||||
}
|
||||
|
||||
export interface APIApplicationCommandInteractionDataSubcommandOption {
|
||||
export interface APIApplicationCommandInteractionDataSubcommandOption<Type extends InteractionType = InteractionType> {
|
||||
name: string;
|
||||
type: ApplicationCommandOptionType.Subcommand;
|
||||
options?: APIApplicationCommandInteractionDataBasicOption[];
|
||||
options?: APIApplicationCommandInteractionDataBasicOption<Type>[];
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type { InteractionType } from '../../responses';
|
||||
import type { APIApplicationCommandOptionBase } from './base';
|
||||
import type { ApplicationCommandOptionType } from './shared';
|
||||
import type {
|
||||
@@ -10,8 +11,10 @@ export interface APIApplicationCommandSubcommandGroupOption
|
||||
options?: APIApplicationCommandSubcommandOption[];
|
||||
}
|
||||
|
||||
export interface APIApplicationCommandInteractionDataSubcommandGroupOption {
|
||||
export interface APIApplicationCommandInteractionDataSubcommandGroupOption<
|
||||
Type extends InteractionType = InteractionType,
|
||||
> {
|
||||
name: string;
|
||||
type: ApplicationCommandOptionType.SubcommandGroup;
|
||||
options: APIApplicationCommandInteractionDataSubcommandOption[];
|
||||
options: APIApplicationCommandInteractionDataSubcommandOption<Type>[];
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { APIInteractionDataResolved } from '../../index';
|
||||
import type { APIInteractionDataResolved, InteractionType } from '../../index';
|
||||
import type { APIApplicationCommandInteractionWrapper, ApplicationCommandType } from '../applicationCommands';
|
||||
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper } from '../base';
|
||||
import type {
|
||||
@@ -86,18 +86,18 @@ export type APIApplicationCommandOption =
|
||||
/**
|
||||
* https://discord.com/developers/docs/interactions/application-commands#application-command-object-application-command-interaction-data-option-structure
|
||||
*/
|
||||
export type APIApplicationCommandInteractionDataOption =
|
||||
| APIApplicationCommandInteractionDataBasicOption
|
||||
| APIApplicationCommandInteractionDataSubcommandGroupOption
|
||||
| APIApplicationCommandInteractionDataSubcommandOption;
|
||||
export type APIApplicationCommandInteractionDataOption<Type extends InteractionType = InteractionType> =
|
||||
| APIApplicationCommandInteractionDataBasicOption<Type>
|
||||
| APIApplicationCommandInteractionDataSubcommandGroupOption<Type>
|
||||
| APIApplicationCommandInteractionDataSubcommandOption<Type>;
|
||||
|
||||
export type APIApplicationCommandInteractionDataBasicOption =
|
||||
export type APIApplicationCommandInteractionDataBasicOption<Type extends InteractionType = InteractionType> =
|
||||
| APIApplicationCommandInteractionDataAttachmentOption
|
||||
| APIApplicationCommandInteractionDataBooleanOption
|
||||
| APIApplicationCommandInteractionDataChannelOption
|
||||
| APIApplicationCommandInteractionDataIntegerOption
|
||||
| APIApplicationCommandInteractionDataIntegerOption<Type>
|
||||
| APIApplicationCommandInteractionDataMentionableOption
|
||||
| APIApplicationCommandInteractionDataNumberOption
|
||||
| APIApplicationCommandInteractionDataNumberOption<Type>
|
||||
| APIApplicationCommandInteractionDataRoleOption
|
||||
| APIApplicationCommandInteractionDataStringOption
|
||||
| APIApplicationCommandInteractionDataUserOption;
|
||||
@@ -107,7 +107,16 @@ export type APIApplicationCommandInteractionDataBasicOption =
|
||||
*/
|
||||
export interface APIChatInputApplicationCommandInteractionData
|
||||
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.ChatInput> {
|
||||
options?: APIApplicationCommandInteractionDataOption[];
|
||||
options?: APIApplicationCommandInteractionDataOption<InteractionType.ApplicationCommand>[];
|
||||
resolved?: APIInteractionDataResolved;
|
||||
}
|
||||
|
||||
/**
|
||||
* https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-interaction-data
|
||||
*/
|
||||
export interface APIAutocompleteApplicationCommandInteractionData
|
||||
extends APIBaseApplicationCommandInteractionData<ApplicationCommandType.ChatInput> {
|
||||
options?: APIApplicationCommandInteractionDataOption<InteractionType.ApplicationCommandAutocomplete>[];
|
||||
resolved?: APIInteractionDataResolved;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type {
|
||||
APIBaseInteraction,
|
||||
APIChatInputApplicationCommandInteractionData,
|
||||
APIAutocompleteApplicationCommandInteractionData,
|
||||
APIDMInteractionWrapper,
|
||||
APIGuildInteractionWrapper,
|
||||
InteractionType,
|
||||
@@ -8,13 +8,13 @@ import type {
|
||||
|
||||
export type APIApplicationCommandAutocompleteInteraction = APIBaseInteraction<
|
||||
InteractionType.ApplicationCommandAutocomplete,
|
||||
APIChatInputApplicationCommandInteractionData
|
||||
APIAutocompleteApplicationCommandInteractionData
|
||||
> &
|
||||
Required<
|
||||
Pick<
|
||||
APIBaseInteraction<
|
||||
InteractionType.ApplicationCommandAutocomplete,
|
||||
Required<Pick<APIChatInputApplicationCommandInteractionData, 'options'>>
|
||||
Required<Pick<APIAutocompleteApplicationCommandInteractionData, 'options'>>
|
||||
>,
|
||||
'data'
|
||||
>
|
||||
|
||||
@@ -13,7 +13,7 @@ import type {
|
||||
APIModalSubmission,
|
||||
APIUser,
|
||||
} from '../../v10';
|
||||
import { ComponentType, InteractionType } from '../../v10';
|
||||
import { ApplicationCommandOptionType, ApplicationCommandType, ComponentType, InteractionType } from '../../v10';
|
||||
import { expectAssignable } from '../__utils__/type-assertions';
|
||||
|
||||
declare const interaction: APIInteraction;
|
||||
@@ -24,6 +24,20 @@ if (interaction.type === InteractionType.ApplicationCommand) {
|
||||
const { data } = interaction;
|
||||
expectAssignable<APIApplicationCommandInteractionData>(data);
|
||||
expectAssignable<Snowflake | undefined>(data.guild_id);
|
||||
|
||||
if (data.type === ApplicationCommandType.ChatInput) {
|
||||
if (data.options?.[0]?.type === ApplicationCommandOptionType.String) {
|
||||
expectAssignable<string>(data.options[0].value);
|
||||
}
|
||||
|
||||
if (data.options?.[0]?.type === ApplicationCommandOptionType.Integer) {
|
||||
expectAssignable<number>(data.options[0].value);
|
||||
}
|
||||
|
||||
if (data.options?.[0]?.type === ApplicationCommandOptionType.Number) {
|
||||
expectAssignable<number>(data.options[0].value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (interaction.type === InteractionType.MessageComponent) {
|
||||
@@ -42,6 +56,18 @@ if (interaction.type === InteractionType.MessageComponent) {
|
||||
|
||||
if (interaction.type === InteractionType.ApplicationCommandAutocomplete) {
|
||||
expectAssignable<APIApplicationCommandAutocompleteInteraction['data']>(interaction.data);
|
||||
|
||||
if (interaction.data.options[0]?.type === ApplicationCommandOptionType.String) {
|
||||
expectAssignable<string>(interaction.data.options[0].value);
|
||||
}
|
||||
|
||||
if (interaction.data.options[0]?.type === ApplicationCommandOptionType.Integer) {
|
||||
expectAssignable<string>(interaction.data.options[0].value);
|
||||
}
|
||||
|
||||
if (interaction.data.options[0]?.type === ApplicationCommandOptionType.Number) {
|
||||
expectAssignable<string>(interaction.data.options[0].value);
|
||||
}
|
||||
}
|
||||
|
||||
if (interaction.type === InteractionType.ModalSubmit) {
|
||||
|
||||
Reference in New Issue
Block a user