/**
* Commands are pieces of code ran when messages contain the bots prefix. Along with these, we have a full argument parsing system for use in commands.
* @module Command
* @example <caption> They will always follow this structure </caption>
* exports.run = async (client, msg, ...args) => { // code here };
* exports.help = {};
* exports.conf = {};
*/
/**
* The part of the command that will run. This should always return a Promise to prevent issues in Komada. The easy way to do this is to add the async keyword.
* @param {KomadaClient} client The Komada Client
* @param {Message} msg A Message object obtained from discord.js
* @param {Array} args An array of arguments passed through by our argument parser.
* @example
* exports.run = (client, msg) => msg.reply("Hello Komada!");
* @example
* exports.run = async (client, msg) => {
* const message = await msg.channel.send("Hello!");
* return message.edit("Hello from Komada!");
* }
* @example
* exports.run = async function run(client, msg) {
* const message = await msg.channel.send("Hello!");
* return message.edit("Hello from Komada!");
* }
* @return {Promise}
*/
exports.run = async (client, msg, ...args) => ({}); // eslint-disable-line
/**
* An object containing help information that will help identify and use a command.
* @typedef {Object} Help
* @property {String} name The name of the command
* @property {String} description The description displayed in the help
* @property {String} usage A usage string that denotes how the command should be used.
* @property {String} usageDelim A character(s) to split the message content by and determine arguments.
*/
/**
* The help object used throughout komada
* @type {Help}
* @example
* exports.help = {
name: "ping",
description: "Ping/Pong command. I wonder what this does? /sarcasm",
usage: "",
usageDelim: "",
};
*/
exports.help = {};
/**
* An Object containing configuration values that will configure a command.
* @typedef {Object} Conf
* @property {Boolean} enabled Whether or not this command should be enabled for use.
* @property {Array} runIn What type of text channels this command should run in.
* @property {Array} aliases An array of names that will also trigger this command.
* @property {Number} permLevel What permission level this command should be limited to.
* @property {Array} botPerms What permissions the bot must have to run this command.
* @property {Array} requiredFuncs What functions are required in the bot to run this command.
* @property {Array} requiredSettings What settings are required in the default schema to run this command.
*/
/**
* An object that configures the command.
* @type {Conf}
* @example
* exports.conf = {
enabled: true,
runIn: ["text", "dm", "group"],
aliases: [],
permLevel: 0,
botPerms: [],
requiredFuncs: [],
requiredSettings: [],
};
*/
exports.conf = {};