UNPKG

seyfert

Version:

The most advanced framework for discord bots

94 lines (93 loc) 4 kB
import type { Snowflake } from '../..'; import type { APIAttachment, APIBaseInteraction, APIDMInteractionWrapper, APIGuildInteractionWrapper, APIInteractionDataResolvedChannel, APIInteractionDataResolvedGuildMember, APILabelComponents, APIRole, APIUser, ComponentType, InteractionType } from '../index'; export interface ModalSubmitComponent { type: APILabelComponents['type']; id?: number; custom_id: string; } export interface ModalSubmitFileUploadData extends ModalSubmitComponent { type: ComponentType.FileUpload; values: string[]; } export type ModalSubmitFileUpload = ModalSubmitInsideLabel<ModalSubmitFileUploadData>; export interface ModalSubmitRadioGroupData extends ModalSubmitComponent { type: ComponentType.RadioGroup; value: string; } export type ModalSubmitRadioGroup = ModalSubmitInsideLabel<ModalSubmitRadioGroupData>; export interface ModalSubmitCheckboxGroupData extends ModalSubmitComponent { type: ComponentType.CheckboxGroup; values: string[]; } export type ModalSubmitCheckboxGroup = ModalSubmitInsideLabel<ModalSubmitCheckboxGroupData>; export interface ModalSubmitCheckboxData extends ModalSubmitComponent { type: ComponentType.Checkbox; value: boolean; } export type ModalSubmitCheckbox = ModalSubmitInsideLabel<ModalSubmitCheckboxData>; export interface ModalSubmitTextInputData extends ModalSubmitComponent { type: ComponentType.TextInput; value: string; } export type ModalSubmitTextInput = ModalSubmitInsideLabel<ModalSubmitTextInputData>; export interface ModalSubmitSelectMenuData extends ModalSubmitComponent { type: ComponentType.StringSelect | ComponentType.UserSelect | ComponentType.RoleSelect | ComponentType.MentionableSelect | ComponentType.ChannelSelect; values: string[]; } export type ModalSubmitSelectMenu = ModalSubmitInsideLabel<ModalSubmitSelectMenuData>; export type ModalSubmitInsideLabelData = ModalSubmitRadioGroupData | ModalSubmitCheckboxGroupData | ModalSubmitCheckboxData | ModalSubmitTextInputData | ModalSubmitSelectMenuData | ModalSubmitFileUploadData; export interface ModalSubmitInsideLabel<C extends ModalSubmitInsideLabelData = ModalSubmitInsideLabelData> { type: ComponentType.Label; id?: number; component?: C; } /** * https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-modal-submit-data-structure */ export interface APIModalSubmission { /** * A developer-defined identifier for the component, max 100 characters */ custom_id: string; /** * A list of child components */ components: ModalSubmitInsideLabel[]; /** * Resolved data structure */ resolved?: { /** * A map of attachments */ attachments?: Record<Snowflake, Omit<APIAttachment, 'duration_secs' | 'waveform'>>; /** * A map of members */ members?: Record<Snowflake, APIInteractionDataResolvedGuildMember>; /** * A map of roles */ roles?: Record<Snowflake, APIRole>; /** * A map of users */ users?: Record<Snowflake, APIUser>; /** * A map of channels */ channels?: Record<Snowflake, APIInteractionDataResolvedChannel>; }; } /** * https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object */ export type APIModalSubmitInteraction = APIBaseInteraction<InteractionType.ModalSubmit, APIModalSubmission> & Required<Pick<APIBaseInteraction<InteractionType.ModalSubmit, APIModalSubmission>, 'data'>>; /** * https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object */ export type APIModalSubmitDMInteraction = APIDMInteractionWrapper<APIModalSubmitInteraction>; /** * https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object */ export type APIModalSubmitGuildInteraction = APIGuildInteractionWrapper<APIModalSubmitInteraction>;