discord.handler.ts
Version:
a simple discord handler
47 lines (44 loc) • 1.8 kB
text/typescript
var fs = require("fs")
var { Collection } = require("discord.js")
class CommandsBuilder {
client: any;
eventsFolder: any;
commandsFolder: any;
constructor({ client, eventsFolder, commandsFolder }) {
this.client = client;
this.eventsFolder = eventsFolder;
this.commandsFolder = commandsFolder;
}
async loadCommands() {
if (this.eventsFolder && this.commandsFolder) {
const commandsFolder = await fs.readdirSync(this.commandsFolder);
const eventsFolder = await fs.readdirSync(this.eventsFolder);
if (!commandsFolder || !eventsFolder) throw new Error("Invalid Folder");
for (let folder of fs.readdirSync(this.commandsFolder)) {
for (let file of fs.readdirSync(`${this.commandsFolder}/${folder}`).filter((file: string) => file.endsWith(".js"))) {
const command = require(`${this.commandsFolder}/${folder}/${file}`);
if (command.name) {
this.client.commands.set(command.name, command);
}
}
}
}
}
async loadEvents() {
if (this.eventsFolder && this.commandsFolder) {
const commandsFolder = await fs.readdirSync(this.commandsFolder);
const eventsFolder = await fs.readdirSync(this.eventsFolder);
if (!eventsFolder) throw new Error("Invalid Folder");
for (let folder of fs.readdirSync(`${this.eventsFolder}`)) {
for (let file of folder) {
const event = require(`${this.eventsFolder}/${folder}/${file}`);
if (event.once)
this.client.once(event.name, (...args: any) => event.execute(...args, this.client));
if (!event.once)
this.client.on(event.name, (...args: any) => event.execute(...args, this.client));
}
}
}
}
}
module.exports = { CommandsBuilder };