From c484753ee15dbe2a5ce9c6297f22fabb52ce3b7e Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 24 Feb 2018 14:59:35 -0500 Subject: New Command system --- bot.js | 61 ++++++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 19 deletions(-) (limited to 'bot.js') diff --git a/bot.js b/bot.js index 9f5e6de..1d64af0 100644 --- a/bot.js +++ b/bot.js @@ -5,27 +5,50 @@ const fs = require('fs'); bot.commands = new Discord.Collection(); bot.aliases = new Discord.Collection(); +bot.categories = new Discord.Collection(); -fs.readdir('./commands', (err, files) => { - if (err) console.error(err); - console.log(`Attempting to load a total of ${files.length} commands into the memory.`); - files.forEach(file => { - try { - const command = require(`./commands/${file}`); - console.log(`Attempting to load the command "${command.help.name}".`); - bot.commands.set(command.help.name, command); - command.conf.aliases.forEach(alias => { - bot.aliases.set(alias, command.help.name); - console.log(`Attempting to load "${alias}" as an alias for "${command.help.name}"`); - }); - } - catch (err) { - console.log('An error has occured trying to load a command. Here is the error.'); - console.log(err.stack); - } +cmdLoader(); + +async function cmdLoader() { + const categories = await fs.readdirSync('./commands'); + console.log(`Loading ${categories.length} categories(s) into memory\n`); + categories.forEach(x => { + loadGroup(x); }); - console.log('Command Loading complete!'); -}); +} +async function loadGroup(name) { + const files = await fs.readdirSync(`./commands/${name}`); + + console.log(`Loading the category '${name}' into memory with a total of ${files.length} command(s)`); + + bot.commands.set(name, new Map()); + bot.aliases.set(name, new Map()); + + const commands = []; + files.forEach(x => { + loadCmd(name, x); + commands.push(x.split('.')[0]); + }); + + bot.categories.set(name, commands); + console.log(`The category ${name} has been loaded.\n`); +} + +async function loadCmd(category, cmd) { + try { + console.log(`Loading the Command ${cmd.split('.')[0]}`); + const command = require(`./commands/${category}/${cmd}`); + bot.commands.get(category).set(command.help.name, command); + command.conf.aliases.forEach(alias => { + bot.aliases.get(category).set(alias, command.help.name); + }); + } + catch (err) { + console.log(`An error has occured trying to load the command '${cmd.split('.')[0]}'`); + console.log(err.stack); + } +} + fs.readdir('./events', (err, files) => { if (err) console.error(err); -- cgit v1.2.3