import { type Client, Collection } from "discord.js"; import type { IEvent } from "../types.ts"; import { Logger } from "../utils/logging.ts"; import { crawlDirectory, getHandlerPath } from "./common.ts"; const logger = new Logger("events"); async function getEvents(): Promise> { const eventFiles = new Collection(); const processFile = async (fileUrl: string) => { const { default: event } = await import(fileUrl); eventFiles.set(event.event, event); return event; }; await crawlDirectory(getHandlerPath("events"), processFile); return eventFiles; } async function registerEvents(client: Client) { const events = await getEvents(); if (events.size === 0) return logger.warn("no events found"); logger.info(`found ${events.size} events.`); for (const event of events.values()) { logger.info(`registering event: ${event.event}`); client[event.once ? "once" : "on"]( event.event, event.execute.bind(null, client), ); } logger.info(`registered ${events.size} events.`); } export default registerEvents; export { logger };