This is my event loader:
import { readdirSync } from "fs"
import { fileURLToPath } from "url"
import type { ClientEvent } from "events/events"
import type { KannaBot } from "types"
const EVENT_DIR = fileURLToPath(new URL("../events/", import.meta.url))
export default function eventLoader(client: KannaBot) {
readdirSync(EVENT_DIR)
.filter(file => file.endsWith(".js"))
.forEach(async eventFile => {
console.debug(`Loading event ${eventFile}...`)
const loadedEvent = await import(`${EVENT_DIR}${eventFile}`)
const event = loadedEvent.default as ClientEvent
client.on(event.eventName, event.callback)
console.debug(`Loaded event ${event.eventName}`)
})
}
Run command:
npx tsc && node build/KannaBot.js
File structure:
KannaBot/
| events
| channelCreate.ts
| guildCreate.ts
| guildDelete.ts
| guildMemberAdd.ts
| messageCreate.ts
| messageUpdate.ts
| ready.ts
Somehow only 2 events are only being imported