seyfert
Version:
The most advanced framework for discord bots
94 lines (93 loc) • 4 kB
TypeScript
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>;