103 lines
2.7 KiB
JavaScript
103 lines
2.7 KiB
JavaScript
// SupportBot | Emerald Services
|
|
// Client Structure
|
|
|
|
const fs = require("fs");
|
|
|
|
const Discord = require("discord.js");
|
|
const Command = require("./Command.js");
|
|
const Event = require("./Event.js");
|
|
const intents = new Discord.Intents(32767);
|
|
|
|
const yaml = require('js-yaml');
|
|
const supportbot = yaml.load(fs.readFileSync('./Data/supportbot.yml', 'utf8'));
|
|
|
|
class Client extends Discord.Client {
|
|
constructor() {
|
|
super({ intents });
|
|
|
|
this.commands = new Discord.Collection();
|
|
|
|
this.prefix = supportbot.Prefix;
|
|
}
|
|
|
|
start(token) {
|
|
const commandFiles = fs.readdirSync("./Commands")
|
|
.filter(file => file.endsWith(".js"));
|
|
|
|
const commands = commandFiles.map(file => require(`../Commands/${file}`));
|
|
|
|
console.log(`\u001b[34;1m`, '▬▬▬▬▬▬▬ Commands ▬▬▬▬▬▬▬')
|
|
|
|
commands.forEach(cmd => {
|
|
console.log(`\u001b[31;1m`, `${cmd.name}`, `\u001b[32;1m`, 'Loaded');
|
|
this.commands.set(cmd.name, cmd);
|
|
});
|
|
|
|
console.log(`\u001b[34;1m`, '▬▬▬▬▬▬▬ Commands ▬▬▬▬▬▬▬')
|
|
|
|
// Addons
|
|
|
|
const addonFiles = fs.readdirSync("./Addons")
|
|
.filter(file => file.endsWith(".js"));
|
|
|
|
const addons = addonFiles.map(file => require(`../Addons/${file}`));
|
|
|
|
console.log(' ')
|
|
console.log(`\u001b[34;1m`, '▬▬▬▬▬▬▬ Addons ▬▬▬▬▬▬▬')
|
|
|
|
addons.forEach(addon => {
|
|
console.log(`\u001b[31;1m`, `${addon.name}`, `\u001b[32;1m`, 'Loaded');
|
|
this.commands.set(addon.name, addon);
|
|
});
|
|
|
|
console.log(`\u001b[34;1m`, '▬▬▬▬▬▬▬ Addons ▬▬▬▬▬▬▬')
|
|
console.log(' ')
|
|
|
|
// Slash Commands
|
|
|
|
const slashCommands = commands
|
|
.filter(cmd => ["BOTH", "SLASH"].includes(cmd.type))
|
|
.map(cmd => ({
|
|
name: cmd.name.toLowerCase(),
|
|
description: cmd.description,
|
|
permissions: [],
|
|
options: cmd.slashCommandOptions,
|
|
defaultPermission: true
|
|
}));
|
|
|
|
this.removeAllListeners();
|
|
|
|
this.on("ready", async () => {
|
|
const cmds = await this.application.commands.set(slashCommands);
|
|
|
|
console.log(' ')
|
|
console.log(`\u001b[34;1m`, '▬▬▬▬▬▬▬ Slash Command ▬▬▬▬▬▬▬'),
|
|
console.log(' ')
|
|
|
|
cmds.forEach(cmd =>
|
|
console.log(`Slash Command ${cmd.name} registered`),
|
|
)
|
|
|
|
})
|
|
|
|
console.log(' ')
|
|
console.log(`\u001b[34;1m`, '▬▬▬▬▬▬▬ Events ▬▬▬▬▬▬▬')
|
|
|
|
fs.readdirSync("./Events")
|
|
.filter(file => file.endsWith(".js"))
|
|
.forEach(file => {
|
|
|
|
const event = require(`../Events/${file}`);
|
|
console.log(`\u001b[31;1m`, `${event.event}`, `\u001b[32;1m`, 'Loaded');
|
|
|
|
this.on(event.event, event.run.bind(null, this));
|
|
});
|
|
|
|
console.log(`\u001b[34;1m`, '▬▬▬▬▬▬▬ Events ▬▬▬▬▬▬▬')
|
|
console.log(' ')
|
|
|
|
this.login(token);
|
|
}
|
|
}
|
|
|
|
module.exports = Client; |