Essem
40223ec8b5
* Load commands recursively * Sort commands * Missed a couple of spots * missed even more spots apparently * Ported commands in "fun" category to new class-based format, added babel eslint plugin * Ported general commands, removed old/unneeded stuff, replaced moment with day, many more fixes I lost track of * Missed a spot * Removed unnecessary abort-controller package, add deprecation warning for mongo database * Added imagereload, clarified premature end message * Fixed docker-compose path issue, added total bot uptime to stats, more fixes for various parts * Converted image commands into classes, fixed reload, ignore another WS event, cleaned up command handler and image runner * Converted music/soundboard commands to class format * Cleanup unnecessary logs * awful tag command class port * I literally somehow just learned that you can leave out the constructor in classes * Pass client directly to commands/events, cleaned up command handler * Migrated bot to eris-sharder, fixed some error handling stuff * Remove unused modules * Fixed type returning * Switched back to Eris stable * Some fixes and cleanup * might wanna correct this * Implement image command ratelimiting * Added Bot token prefix, added imagestats, added running endpoint to API
52 lines
2.1 KiB
JavaScript
52 lines
2.1 KiB
JavaScript
const collections = require("./collections.js");
|
|
const logger = require("./logger.js");
|
|
|
|
// load command into memory
|
|
exports.load = async (command, soundStatus) => {
|
|
const props = require(`../${command}`);
|
|
if (props.requires.includes("google") && process.env.GOOGLE === "") return logger.log("warn", `Google info not provided in config, skipped loading command ${command}...`);
|
|
if (props.requires.includes("cat") && process.env.CAT === "") return logger.log("warn", `Cat API info not provided in config, skipped loading command ${command}...`);
|
|
if (props.requires.includes("mashape") && process.env.MASHAPE === "") return logger.log("warn", `Mashape/RapidAPI info not provided in config, skipped loading command ${command}...`);
|
|
if (props.requires.includes("sound") && soundStatus) return logger.log("warn", `Failed to connect to some Lavalink nodes, skipped loading command ${command}...`);
|
|
const commandArray = command.split("/");
|
|
const commandName = commandArray[commandArray.length - 1].split(".")[0];
|
|
|
|
collections.paths.set(commandName, command);
|
|
collections.commands.set(commandName, props);
|
|
|
|
collections.info.set(commandName, {
|
|
category: commandArray[2],
|
|
description: props.description,
|
|
aliases: props.aliases,
|
|
params: props.arguments
|
|
});
|
|
|
|
if (props.aliases) {
|
|
for (const alias of props.aliases) {
|
|
collections.aliases.set(alias, commandName);
|
|
collections.paths.set(alias, command);
|
|
}
|
|
}
|
|
return false;
|
|
};
|
|
|
|
// unload command from memory
|
|
exports.unload = async (command) => {
|
|
let cmd;
|
|
if (collections.commands.has(command)) {
|
|
cmd = collections.commands.get(command);
|
|
} else if (collections.aliases.has(command)) {
|
|
cmd = collections.commands.get(collections.aliases.get(command));
|
|
}
|
|
if (!cmd) return `The command \`${command}\` doesn't seem to exist, nor is it an alias.`;
|
|
const path = collections.paths.get(command);
|
|
const mod = require.cache[require.resolve(`../${path}`)];
|
|
delete require.cache[require.resolve(`../${path}`)];
|
|
for (let i = 0; i < module.children.length; i++) {
|
|
if (module.children[i] === mod) {
|
|
module.children.splice(i, 1);
|
|
break;
|
|
}
|
|
}
|
|
return false;
|
|
};
|