yaejunyang/packages/bot/event.ts

22 lines
669 B
TypeScript

import { type ClientEvents } from "discord.js";
import { join } from "node:path";
import { requireDirectory } from "../utils/requireDirectory";
export interface DiscordEvent<Event extends keyof ClientEvents> {
event: Event;
callback: (...args: ClientEvents[Event]) => Promise<void>;
}
export function defineEvent<Event extends keyof ClientEvents>(
event: Event,
callback: (...args: ClientEvents[Event]) => Promise<void>,
): DiscordEvent<Event> {
return {
event: event,
callback: callback,
};
}
export const eventDirectory = join(import.meta.dirname, "events");
export const eventMap =
await requireDirectory<DiscordEvent<any>>(eventDirectory);