types(ApplicationCommandManager): Deprecate old *Data type usages and allow camel cased dapi types to be used (#6959)

This commit is contained in:
Suneet Tipirneni
2021-11-29 05:17:57 -05:00
committed by GitHub
parent 54f937d82c
commit 2c91c488e8
5 changed files with 129 additions and 82 deletions

View File

@@ -1,5 +1,4 @@
import type { ChildProcess } from 'child_process';
import type {
import {
APIInteractionGuildMember,
APIMessage,
APIPartialChannel,
@@ -7,15 +6,21 @@ import type {
APIInteractionDataResolvedGuildMember,
APIInteractionDataResolvedChannel,
APIRole,
ChannelType,
ApplicationCommandOptionType,
APIApplicationCommand,
APIApplicationCommandOption,
APIApplicationCommandSubCommandOptions,
} from 'discord-api-types/v9';
import type { ChildProcess } from 'node:child_process';
import {
ApplicationCommand,
ApplicationCommandData,
ApplicationCommandChannelOptionData,
ApplicationCommandChoicesData,
ApplicationCommandManager,
ApplicationCommandOptionData,
ApplicationCommandNonOptionsData,
ApplicationCommandResolvable,
ApplicationCommandSubCommandData,
ApplicationCommandSubGroupData,
BaseCommandInteraction,
ButtonInteraction,
CacheType,
@@ -28,7 +33,6 @@ import {
CommandInteraction,
CommandInteractionOption,
CommandInteractionOptionResolver,
CommandOptionNonChoiceResolvableType,
Constants,
ContextMenuInteraction,
DMChannel,
@@ -77,6 +81,9 @@ import {
User,
VoiceChannel,
Shard,
Camelize,
ApplicationCommandAutocompleteOption,
ApplicationCommandNumericOptionData,
WebSocketShard,
Collector,
} from '.';
@@ -686,6 +693,20 @@ client.login('absolutely-valid-token');
// Test client conditional types
client.on('ready', client => {
expectType<Client<true>>(client);
// Test camelized post command data.
client.application.commands.create({
name: 'Foo',
description: 'Bar',
options: [
{
name: 'test',
description: 'test',
type: ApplicationCommandOptionType.Channel,
channelTypes: [ChannelType.GuildCategory],
},
],
});
});
declare const loggedInClient: Client<true>;
@@ -783,7 +804,7 @@ expectType<1>(Constants.Status.CONNECTING);
expectType<0>(Constants.Opcodes.DISPATCH);
expectType<2>(Constants.ClientApplicationAssetTypes.BIG);
declare const applicationCommandData: ApplicationCommandData;
declare const applicationCommandData: Camelize<APIApplicationCommand>;
declare const applicationCommandResolvable: ApplicationCommandResolvable;
declare const applicationCommandManager: ApplicationCommandManager;
{
@@ -805,22 +826,29 @@ declare const applicationCommandManager: ApplicationCommandManager;
);
}
declare const applicationNonChoiceOptionData: ApplicationCommandOptionData & {
type: CommandOptionNonChoiceResolvableType;
};
declare const applicationSubGroupCommandData: Camelize<APIApplicationCommandSubCommandOptions>;
{
// Options aren't allowed on this command type.
// @ts-expect-error
applicationNonChoiceOptionData.choices;
}
declare const applicationSubGroupCommandData: ApplicationCommandSubGroupData;
{
expectType<'SUB_COMMAND_GROUP' | ApplicationCommandOptionTypes.SUB_COMMAND_GROUP>(
expectType<ApplicationCommandOptionType.Subcommand | ApplicationCommandOptionType.SubcommandGroup>(
applicationSubGroupCommandData.type,
);
expectType<ApplicationCommandSubCommandData[] | undefined>(applicationSubGroupCommandData.options);
expectAssignable<APIApplicationCommandOption[] | undefined>(applicationSubGroupCommandData.options);
}
declare const applicationSubCommandData: ApplicationCommandSubCommandData;
{
expectType<'SUB_COMMAND' | ApplicationCommandOptionTypes.SUB_COMMAND>(applicationSubCommandData.type);
// Check that only subcommands can have no subcommand or subcommand group sub-options.
expectType<
| (
| ApplicationCommandChoicesData
| ApplicationCommandNonOptionsData
| ApplicationCommandChannelOptionData
| ApplicationCommandAutocompleteOption
| ApplicationCommandNumericOptionData
)[]
| undefined
>(applicationSubCommandData.options);
}
declare const guildApplicationCommandManager: GuildApplicationCommandManager;