From 8bbb81942b3f87e46273bb75a12e2db4ef7ee797 Mon Sep 17 00:00:00 2001 From: Suneet Tipirneni <77477100+suneettipirneni@users.noreply.github.com> Date: Wed, 22 Dec 2021 13:19:45 -0500 Subject: [PATCH] types: make application command option union easier to use (#250) --- .../_applicationCommands/chatInput.ts | 1 - .../_applicationCommands/chatInput.ts | 2 - .../_applicationCommands/chatInput.ts | 1 - .../_applicationCommands/chatInput.ts | 2 - tests/v9/chatInputOptions.test-d.ts | 62 +++++++++++++++++++ 5 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 tests/v9/chatInputOptions.test-d.ts diff --git a/deno/payloads/v8/_interactions/_applicationCommands/chatInput.ts b/deno/payloads/v8/_interactions/_applicationCommands/chatInput.ts index ac4d12c4..95070d18 100644 --- a/deno/payloads/v8/_interactions/_applicationCommands/chatInput.ts +++ b/deno/payloads/v8/_interactions/_applicationCommands/chatInput.ts @@ -18,7 +18,6 @@ interface APIApplicationCommandOptionBase { name: string; description: string; required?: boolean; - autocomplete?: never; } /** diff --git a/deno/payloads/v9/_interactions/_applicationCommands/chatInput.ts b/deno/payloads/v9/_interactions/_applicationCommands/chatInput.ts index 2314beb7..f0053503 100644 --- a/deno/payloads/v9/_interactions/_applicationCommands/chatInput.ts +++ b/deno/payloads/v9/_interactions/_applicationCommands/chatInput.ts @@ -18,7 +18,6 @@ interface APIApplicationCommandOptionBase { name: string; description: string; required?: boolean; - autocomplete?: never; } /** @@ -29,7 +28,6 @@ export type APIApplicationCommandOption = | APIApplicationCommandSubCommandOptions | APIApplicationCommandOptionBase | APIApplicationCommandChannelOptions - | APIApplicationCommandOptionBase | APIApplicationCommandNumberArgumentOptions | APIApplicationCommandStringAutocompleteOptions | APIApplicationCommandNumericAutocompleteOptions; diff --git a/payloads/v8/_interactions/_applicationCommands/chatInput.ts b/payloads/v8/_interactions/_applicationCommands/chatInput.ts index de7ac1f3..83500ac1 100644 --- a/payloads/v8/_interactions/_applicationCommands/chatInput.ts +++ b/payloads/v8/_interactions/_applicationCommands/chatInput.ts @@ -18,7 +18,6 @@ interface APIApplicationCommandOptionBase { name: string; description: string; required?: boolean; - autocomplete?: never; } /** diff --git a/payloads/v9/_interactions/_applicationCommands/chatInput.ts b/payloads/v9/_interactions/_applicationCommands/chatInput.ts index 178ce15a..2764114c 100644 --- a/payloads/v9/_interactions/_applicationCommands/chatInput.ts +++ b/payloads/v9/_interactions/_applicationCommands/chatInput.ts @@ -18,7 +18,6 @@ interface APIApplicationCommandOptionBase { name: string; description: string; required?: boolean; - autocomplete?: never; } /** @@ -29,7 +28,6 @@ export type APIApplicationCommandOption = | APIApplicationCommandSubCommandOptions | APIApplicationCommandOptionBase | APIApplicationCommandChannelOptions - | APIApplicationCommandOptionBase | APIApplicationCommandNumberArgumentOptions | APIApplicationCommandStringAutocompleteOptions | APIApplicationCommandNumericAutocompleteOptions; diff --git a/tests/v9/chatInputOptions.test-d.ts b/tests/v9/chatInputOptions.test-d.ts new file mode 100644 index 00000000..01636732 --- /dev/null +++ b/tests/v9/chatInputOptions.test-d.ts @@ -0,0 +1,62 @@ +import { expectAssignable, expectNotAssignable, expectNotType } from 'tsd'; +import { + APIApplicationCommandNumericAutocompleteOptions, + APIApplicationCommandOption, + APIApplicationCommandStringAutocompleteOptions, + ApplicationCommandOptionType, +} from '../../v9'; + +const baseValues = { + name: 'test', + description: 'test', +}; + +expectAssignable({ + ...baseValues, + type: ApplicationCommandOptionType.String, + autocomplete: true, +}); + +expectAssignable({ + ...baseValues, + type: ApplicationCommandOptionType.Integer, + autocomplete: true, +}); + +expectAssignable({ + ...baseValues, + type: ApplicationCommandOptionType.Number, + autocomplete: true, +}); + +expectNotType({ + ...baseValues, + type: ApplicationCommandOptionType.String, + choices: [], +}); + +expectNotAssignable({ + ...baseValues, + type: ApplicationCommandOptionType.String, + choices: [], + autocomplete: true, +}); + +expectNotAssignable({ + ...baseValues, + type: ApplicationCommandOptionType.String, + choices: [], + autocomplete: false, +}); + +expectNotAssignable({ + ...baseValues, + type: ApplicationCommandOptionType.Number, + choices: [], +}); + +expectNotAssignable({ + ...baseValues, + type: ApplicationCommandOptionType.Boolean, + autocomplete: true, +});