From c0c99e1b7b4e63bab594a47002ca0eec109ceffc Mon Sep 17 00:00:00 2001 From: ITOH <72305210+itohatweb@users.noreply.github.com> Date: Wed, 5 May 2021 17:48:31 +0200 Subject: [PATCH] Update application_command_interaction_data_option.ts --- ...ication_command_interaction_data_option.ts | 83 ++++++++++++++++++- 1 file changed, 79 insertions(+), 4 deletions(-) diff --git a/src/types/interactions/application_command_interaction_data_option.ts b/src/types/interactions/application_command_interaction_data_option.ts index 99421663d..10275553d 100644 --- a/src/types/interactions/application_command_interaction_data_option.ts +++ b/src/types/interactions/application_command_interaction_data_option.ts @@ -1,13 +1,88 @@ +import { Channel } from "../channels/channel.ts"; +import { Role } from "../permissions/role.ts"; +import { User } from "../users/user.ts"; import { DiscordApplicationCommandOptionTypes } from "./application_command_option_types.ts"; /** https://discord.com/developers/docs/interactions/slash-commands#interaction-applicationcommandinteractiondataoption */ -export interface ApplicationCommandInteractionDataOption { +export type ApplicationCommandInteractionDataOption = + | ApplicationCommandInteractionDataOptionSubCommand + | ApplicationCommandInteractionDataOptionSubCommandGroup + | ApplicationCommandInteractionDataOptionString + | ApplicationCommandInteractionDataOptionInteger + | ApplicationCommandInteractionDataOptionBoolean + | ApplicationCommandInteractionDataOptionUser + | ApplicationCommandInteractionDataOptionChannel + | ApplicationCommandInteractionDataOptionRole + | ApplicationCommandInteractionDataOptionMentionable; + +interface ApplicationCommandInteractionDataOptionBase< + T extends DiscordApplicationCommandOptionTypes, + V = unknown, +> { /** The name of the parameter */ name: string; - /** value of DiscordApplicationCommandOptionTypes */ - type: DiscordApplicationCommandOptionTypes; + /** Type of the option */ + type: T; /** The value of the pair */ - value?: DiscordApplicationCommandOptionTypes; + value: V; +} + +export interface ApplicationCommandInteractionDataOptionSubCommand + extends + ApplicationCommandInteractionDataOptionBase< + DiscordApplicationCommandOptionTypes.SUB_COMMAND + > { /** Present if this option is a group or subcommand */ options?: ApplicationCommandInteractionDataOption[]; } + +export interface ApplicationCommandInteractionDataOptionSubCommandGroup + extends + ApplicationCommandInteractionDataOptionBase< + DiscordApplicationCommandOptionTypes.SUB_COMMAND_GROUP + > { + /** Present if this option is a group or subcommand */ + options?: ApplicationCommandInteractionDataOption[]; +} + +export type ApplicationCommandInteractionDataOptionString = + ApplicationCommandInteractionDataOptionBase< + DiscordApplicationCommandOptionTypes.STRING, + string + >; + +export type ApplicationCommandInteractionDataOptionInteger = + ApplicationCommandInteractionDataOptionBase< + DiscordApplicationCommandOptionTypes.INTEGER, + number + >; + +export type ApplicationCommandInteractionDataOptionBoolean = + ApplicationCommandInteractionDataOptionBase< + DiscordApplicationCommandOptionTypes.BOOLEAN, + boolean + >; + +export type ApplicationCommandInteractionDataOptionUser = + ApplicationCommandInteractionDataOptionBase< + DiscordApplicationCommandOptionTypes.USER, + User + >; + +export type ApplicationCommandInteractionDataOptionChannel = + ApplicationCommandInteractionDataOptionBase< + DiscordApplicationCommandOptionTypes.CHANNEL, + Channel + >; + +export type ApplicationCommandInteractionDataOptionRole = + ApplicationCommandInteractionDataOptionBase< + DiscordApplicationCommandOptionTypes.ROLE, + Role + >; + +export type ApplicationCommandInteractionDataOptionMentionable = + ApplicationCommandInteractionDataOptionBase< + DiscordApplicationCommandOptionTypes.MENTIONABLE, + bigint + >;