78 lines
2.4 KiB
TypeScript
78 lines
2.4 KiB
TypeScript
import {
|
|
AllowedMentionsPayload,
|
|
EmbedPayload,
|
|
MessagePayload
|
|
} from './channel.ts'
|
|
import type { MemberPayload } from './guild.ts'
|
|
import type { InteractionApplicationCommandData } from './slashCommands.ts'
|
|
import type { UserPayload } from './user.ts'
|
|
|
|
export enum InteractionType {
|
|
/** Ping sent by the API (HTTP-only) */
|
|
PING = 1,
|
|
/** Slash Command Interaction */
|
|
APPLICATION_COMMAND = 2
|
|
}
|
|
|
|
export interface InteractionMemberPayload extends MemberPayload {
|
|
/** Permissions of the Member who initiated Interaction (Guild-only) */
|
|
permissions: string
|
|
}
|
|
|
|
export interface InteractionPayload {
|
|
/** Type of the Interaction */
|
|
type: InteractionType
|
|
/** Token of the Interaction to respond */
|
|
token: string
|
|
/** Member object of user who invoked */
|
|
member?: InteractionMemberPayload
|
|
/** User who initiated Interaction (only in DMs) */
|
|
user?: UserPayload
|
|
/** ID of the Interaction */
|
|
id: string
|
|
/**
|
|
* Data sent with the interaction. Undefined only when Interaction is PING (http-only).*
|
|
*/
|
|
data?: InteractionApplicationCommandData
|
|
/** ID of the Guild in which Interaction was invoked */
|
|
guild_id?: string
|
|
/** ID of the Channel in which Interaction was invoked */
|
|
channel_id?: string
|
|
/** Application ID of the Client who received interaction */
|
|
application_id: string
|
|
/** Message ID if the Interaction was of type MESSAGE_COMPONENT */
|
|
message?: MessagePayload
|
|
}
|
|
|
|
export enum InteractionResponseType {
|
|
/** Just ack a ping, Http-only. */
|
|
PONG = 1,
|
|
/** Send a channel message as response. */
|
|
CHANNEL_MESSAGE_WITH_SOURCE = 4,
|
|
/** Let the user know bot is processing ("thinking") and you can edit the response later */
|
|
DEFERRED_CHANNEL_MESSAGE = 5
|
|
}
|
|
|
|
export interface InteractionResponsePayload {
|
|
/** Type of the response */
|
|
type: InteractionResponseType
|
|
/** Data to be sent with response. Optional for types: Pong, Acknowledge, Ack with Source */
|
|
data?: InteractionResponseDataPayload
|
|
}
|
|
|
|
export interface InteractionResponseDataPayload {
|
|
tts?: boolean
|
|
/** Text content of the Response (Message) */
|
|
content: string
|
|
/** Upto 10 Embed Objects to send with Response */
|
|
embeds?: EmbedPayload[]
|
|
/** Allowed Mentions object */
|
|
allowed_mentions?: AllowedMentionsPayload
|
|
flags?: number
|
|
}
|
|
|
|
export enum InteractionResponseFlags {
|
|
/** A Message which is only visible to Interaction User. */
|
|
EPHEMERAL = 1 << 6
|
|
}
|