Fixed interaction payload/data type

This commit is contained in:
2025-01-05 14:43:12 -06:00
parent 202255d4ff
commit 8943b5a06e
3 changed files with 18 additions and 13 deletions
+1 -1
View File
@@ -14,5 +14,5 @@ export { Message, type MessagePayload, ComponentStyle, ComponentType } from './t
export { Embed } from './types/embed';
export { Emoji } from './types/emoji';
// Other
export { createCommandHandler } from './types/handler';
export { createCommandHandler, type InteractionData, type InteractionCommpoentData, type InteractionCommandData, type InteractionHandlerFunction } from './types/handler';
export { ApplicationCommandType, ApplicationCommandOptionType as CommandOptionType } from './types/applicationCommand';
+6 -4
View File
@@ -1,3 +1,4 @@
import { exists } from "../utils";
import { ApplicationCommandContext, ApplicationCommandOptionType, type ApplicationCommandOption } from "./applicationCommand";
import { Trait, type EventPayload } from "./common";
import type { Context } from "./context";
@@ -160,10 +161,11 @@ export function createCommandHandler<T extends readonly ApplicationCommandOption
return new CommandHandler(handler);
}
export type CommandHandlerFunction = (context: Context, args: any[]) => Promise<void> | void;
export type EventHandlerFunction = (context: Context | null, payload: EventPayload) => Promise<void> | void;
export type CommandHandlerFunction = (context: Context, args: any[]) => Promise<any> | any;
export type EventHandlerFunction = (context: Context | null, payload: EventPayload) => Promise<any> | any;
export type InteractionHandlerFunction<P = InteractionData> = (context: Context, payload: P) => Promise<any> | any;
export type HandlerWithoutContext = EventHandlerFunction;
export type HanderWithContext = CommandHandlerFunction | CommandHandler<readonly ApplicationCommandOption[]>;
export type HanderWithContext = InteractionHandlerFunction | CommandHandlerFunction | CommandHandler<readonly ApplicationCommandOption[]>;
export type Handler = EventHandlerFunction | CommandHandlerFunction | CommandHandler<readonly ApplicationCommandOption[]>;
export type Handler = InteractionHandlerFunction<InteractionCommpoentData> | InteractionHandlerFunction<InteractionCommandData> | EventHandlerFunction | CommandHandlerFunction | CommandHandler<readonly ApplicationCommandOption[]>;
+10 -7
View File
@@ -1,5 +1,4 @@
import { Client, ComponentStyle, type Context, createCommandHandler, Expectation, Intent, InteractionPayload, Message, type MessagePayload } from '../src/index';
import { ApplicationCommandOptionType, ApplicationCommandType } from '../src/types/applicationCommand';
import { ApplicationCommandType, Client, CommandOptionType, ComponentStyle, type Context, createCommandHandler, Expectation, Intent, InteractionCommpoentData, type InteractionData, Message, type MessagePayload } from '../src/index';
const client = new Client({
token: process.env.BOT_TOKEN!,
@@ -33,21 +32,21 @@ client.applicationCommands.register('hello', ApplicationCommandType.Chat, create
description: "Introduce yourself",
args: [
{
type: ApplicationCommandOptionType.String,
type: CommandOptionType.String,
name: "name",
id: "name",
description: "Your name",
required: true
},
{
type: ApplicationCommandOptionType.Integer,
type: CommandOptionType.Integer,
name: "age",
id: "age",
description: "Your age",
required: true
},
{
type: ApplicationCommandOptionType.String,
type: CommandOptionType.String,
name: "favorite_animal",
id: "favorite_animal",
description: "Your favorite animal",
@@ -186,7 +185,7 @@ client.chatCommands.register('demo', async (context: Context, _args: any[]) => {
context.reply(msg);
});
const buttonInteractionHandler = (context: Context, data: InteractionData) => {
const buttonInteractionHandler = (context: Context, data: InteractionCommpoentData) => {
context.reply(`You clicked the ${data.custom_id} button!`);
};
@@ -197,8 +196,12 @@ client.interactions.register('button_4', buttonInteractionHandler);
client.interactions.register('button_5', buttonInteractionHandler);
client.interactions.register('button_6', buttonInteractionHandler);
client.interactions.register('select_1', async (context: Context, data: InteractionData) => {
client.interactions.register('select_1', async (context: Context, data: InteractionCommpoentData) => {
if (data?.values !== undefined) {
context.reply(`You selected ${data.values[0]}!`);
} else {
context.reply('You selected nothing!');
}
});
client.connect();