Create Command
One of the most important features we wanted in our template, was that you can use the same code for handling
slash commands
and message based commands
.
This can be done by saving the static class in the command cache, creating a constructor and passing the desired data.
Moreover the BaseCommand
is extended with the Response Command
class, so you can take advantage of functions such as
.reply()
Copy the BaseCommand
&
CommandResponses
code from the template
Creating a Ping Command:
const BaseCommand = require("../../../Structures/BaseCommand.js");
const Embed = require("../../../Structures/Embed.js");
class pingCommand extends BaseCommand {
static name = "ping";
static description = "See if the bot latency is okay";
static usage = "";
static category = "General";
static slash = { name: "ping", category: "info" };
constructor(data) {
super(data);
}
async execute() {
const msg = await this.reply({content: `Pinging...`});
// Assign properties to the response
const ping = msg.timestamp - this.message.timestamp;
const embed = new Embed()
.setTitle(`The Bots ping is ${ping} ms`)
.toJSON();
// Edit Message with the Embed
return await msg.edit({embeds: [embed] });
});
}
}
module.exports = pingCommand;
- The
BaseCommand
is extended with theCommandResponses
class. - The ping command class is extended with the
BaseCommand
class. - Some static properties are assigned to the ping command class, in order to access it in the cache, such as
name
,description
,usage
,category
andslash
... - The
execute()
function will be called, when the command has been run by the user. - The constructor allows to access data, such as
this.message
,this.args
,this.client
...
You can customize the CommandManager
file, in order to pass arguments in the execute()
function.