harmony/src/types/slash.ts

90 lines
1.7 KiB
TypeScript
Raw Normal View History

2020-12-10 04:36:36 +00:00
import { EmbedPayload } from './channel.ts'
import { MemberPayload } from './guild.ts'
export interface InteractionOption {
name: string
value?: any
options?: any[]
}
export interface InteractionData {
options: InteractionOption[]
name: string
id: string
}
export enum InteractionType {
PING = 1,
APPLICATION_COMMAND = 2
}
export interface InteractionPayload {
type: InteractionType
token: string
member: MemberPayload
id: string
data: InteractionData
2020-12-10 06:55:52 +00:00
guild_id: string
channel_id: string
2020-12-10 04:36:36 +00:00
}
export interface SlashCommandChoice {
name: string
value: string
}
export enum SlashCommandOptionType {
SUB_COMMAND = 1,
SUB_COMMAND_GROUP = 2,
STRING = 3,
INTEGER = 4,
BOOLEAN = 5,
USER = 6,
CHANNEL = 7,
ROLE = 8
}
export interface SlashCommandOption {
name: string
description: string
type: SlashCommandOptionType
required: boolean
choices?: SlashCommandChoice[]
}
2020-12-10 06:55:52 +00:00
export interface SlashCommandPartial {
2020-12-10 04:36:36 +00:00
name: string
description: string
options: SlashCommandOption[]
}
2020-12-10 06:55:52 +00:00
export interface SlashCommandPayload extends SlashCommandPartial {
id: string
application_id: string
}
2020-12-10 04:36:36 +00:00
export enum InteractionResponseType {
PONG = 1,
ACKNOWLEDGE = 2,
CHANNEL_MESSAGE = 3,
CHANNEL_MESSAGE_WITH_SOURCE = 4,
ACK_WITH_SOURCE = 5
}
export interface InteractionResponsePayload {
type: InteractionResponseType
data?: InteractionResponseDataPayload
}
export interface InteractionResponseDataPayload {
tts?: boolean
content: string
embeds?: EmbedPayload[]
allowed_mentions?: {
parse?: 'everyone' | 'users' | 'roles'
roles?: string[]
users?: string[]
}
flags?: number
}