Skip to main content
Module

x/discord_api_types/payloads/v9/_interactions/messageComponents.ts

Up to date Discord API Typings, versioned by the API version
Go to Latest
File
import type { APIDMInteractionWrapper, APIGuildInteractionWrapper, APIInteractionDataResolved, APIUserInteractionDataResolved,} from './base.ts';import type { Snowflake } from '../../../globals.ts';import type { ComponentType } from '../channel.ts';import type { APIBaseInteraction, InteractionType } from '../interactions.ts';
export type APIMessageComponentInteraction = APIBaseInteraction< InteractionType.MessageComponent, APIMessageComponentInteractionData> & Required< Pick< APIBaseInteraction<InteractionType.MessageComponent, APIMessageComponentInteractionData>, 'channel_id' | 'data' | 'message' > >;
export type APIMessageComponentButtonInteraction = APIBaseInteraction< InteractionType.MessageComponent, APIMessageButtonInteractionData> & Required< Pick< APIBaseInteraction<InteractionType.MessageComponent, APIMessageButtonInteractionData>, 'channel_id' | 'data' | 'message' > >;
export type APIMessageComponentSelectMenuInteraction = APIBaseInteraction< InteractionType.MessageComponent, APIMessageSelectMenuInteractionData> & Required< Pick< APIBaseInteraction<InteractionType.MessageComponent, APIMessageSelectMenuInteractionData>, 'channel_id' | 'data' | 'message' > >;
export type APIMessageComponentInteractionData = APIMessageButtonInteractionData | APIMessageSelectMenuInteractionData;
export interface APIMessageComponentBaseInteractionData<CType extends ComponentType> { /** * The `custom_id` of the component */ custom_id: string; /** * The type of the component */ component_type: CType;}
export type APIMessageButtonInteractionData = APIMessageComponentBaseInteractionData<ComponentType.Button>;
export interface APIMessageStringSelectInteractionData extends APIMessageComponentBaseInteractionData<ComponentType.StringSelect> { values: string[];}
export interface APIMessageUserSelectInteractionData extends APIMessageComponentBaseInteractionData<ComponentType.UserSelect> { values: Snowflake[]; resolved: APIUserInteractionDataResolved;}
export interface APIMessageRoleSelectInteractionData extends APIMessageComponentBaseInteractionData<ComponentType.RoleSelect> { values: Snowflake[]; resolved: Required<Pick<APIInteractionDataResolved, 'roles'>>;}
export interface APIMessageMentionableSelectInteractionData extends APIMessageComponentBaseInteractionData<ComponentType.MentionableSelect> { values: Snowflake[]; resolved: Pick<APIInteractionDataResolved, 'users' | 'members' | 'roles'>;}
export interface APIMessageChannelSelectInteractionData extends APIMessageComponentBaseInteractionData<ComponentType.ChannelSelect> { values: Snowflake[]; resolved: Required<Pick<APIInteractionDataResolved, 'channels'>>;}
export type APIMessageSelectMenuInteractionData = | APIMessageStringSelectInteractionData | APIMessageUserSelectInteractionData | APIMessageRoleSelectInteractionData | APIMessageMentionableSelectInteractionData | APIMessageChannelSelectInteractionData;
export type APIMessageComponentDMInteraction = APIDMInteractionWrapper<APIMessageComponentInteraction>;
export type APIMessageComponentGuildInteraction = APIGuildInteractionWrapper<APIMessageComponentInteraction>;