From 1b2ee053f0890918b2e1ab200bb88b23ce1ff656 Mon Sep 17 00:00:00 2001 From: Vermium Sifell Date: Thu, 14 Apr 2022 20:07:55 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20async=20event=20handler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/handlers/events.ts | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/src/handlers/events.ts b/src/handlers/events.ts index f72010a..86f112d 100644 --- a/src/handlers/events.ts +++ b/src/handlers/events.ts @@ -3,20 +3,27 @@ import { Client } from "discord.js"; // discord.js import logger from "@logger"; export default async (client: Client) => { - const eventFiles = fs.readdirSync("./src/events"); - - for (const file of eventFiles) { - const event = require(`../events/${file}`); - if (event.once) { - client.once(event.default.name, (...args) => - event.default.execute(...args) - ); - logger?.verbose(`Loaded event: ${event.default.name}`); - } else { - client.on(event.default.name, (...args) => - event.default.execute(...args) - ); - logger?.verbose(`Loaded event: ${event.default.name}`); + fs.readdir("./src/events", async (error, events) => { + if (error) { + return logger?.error(`Error reading plugins: ${error}`); } - } + + await Promise.all( + events?.map(async (eventName) => { + const event = await import(`../events/${eventName}`); + + if (event.once) { + return client.once(event.default.name, async (...args) => + event.default.execute(...args) + ); + } + + logger?.verbose(`Loaded event: ${eventName}`); + + return client.on(event.default.name, async (...args) => + event.default.execute(...args) + ); + }) + ); + }); };