Creating a command

Create your own command

You can contribute to Wump by creating your own command, this is very easy if you have a basic understanding of Node.JS

extData of a command

Every command has extData, this basically is the command-specific settings object, it's structured as followed:

_base.js
cmd.extData = {
// Information
path : undefined, // The config path of the command [`wump.utility.ping` for example] ( optional )
name : null, // Command name ( required )
syntax : null, // Command syntax ( optional )
bearer : 'wump', // Command bearer ( required )
aliases : [], // Command aliases ( optional )
argument : [], // Command arguments ( optional )
description: null, // Command description ( optional )
// Checks
hidden : false, // Hidden from view ( true / false )
enabled : true, // Enabled or disabled ( true / false )
cooldown : 1000, // Command cooldown ( optional )
category : 'General', // Command category ( required )
ownerOnly : false, // Owner only ( true / false )
guildOnly : false, // Guild only ( true / false )
permissions: [] // Bot permissions ( optional )
}

Base command class

A command is structured as followed:

_base.js
const { DiscordCommand } = requir e('../../core');
/*
Replace <name> with your command's name
Replace <syntax> with your command's syntax
Replace <author> with your name
Replace <description> with your description
*/
module.exports = class <name> extends DiscordCommand {
constructor(bot) {
super(bot, {
path : undefined,
name : '<name>',
syntax : '<syntax>',
bearer : '<author>',
aliases : [],
argument : [],
description: '<description>',
hidden : false,
enabled : true,
cooldown : 1000,
category : 'Utility',
ownerOnly : false,
guildOnly : false,
permissions: []
});
Object.freeze(this);
Object.freeze(this.static);
}
async execute(msg, args, user, guild) {
// ...
}
_localize(msg, extData = {}) {
try {
if (!msg) throw 'INVALID_STRING';
// ...
} catch (ex) {
return `LOCALIZE_ERROR:${ex.code}`;
}
}
};

Creating your command

A command should be put inside of Command.emitas followed:

_base.js
emit(msg, args, user, guild) {
console.log(msg, args, user, guild);
// Localizing
console.log(this._localize(msg.author.locale.cooldown, msg.author);
}

Localizing your command

Localizing is done with the private Command._localize function as followed:

_base.js
_localize(msg, extData = {}) {
try {
if (!msg) throw 'INVALID_STRING';
return msg
.replace(/{e\.user\.id}/, extData.id)
} catch (ex) {
return `LOCALIZE_ERROR:${ex.code}`;
}
}

How to submit

After you've tested and linted your command, you can submit it by creating a pull request on GitHub. It may take some time for your pull request to be reviewed