npm i discordjs-cmds2
- Simply create commands with invoke aliases, permission level, description and help text by creating a class for each command exteding the 
Commandabstract class. - Use whatever you want as Database source to manage permissions and guild prefixes by creating your own database driver extending the 
DatabaseInterfaceclass. - Permission system using permission levels.
 - You can also implement your own permission system into discordjs-cmds2 by using the 
PermissionInterfaceclass. - Group your commands together
 - Automatically created command list and help message
 - You can also replace the default help command with your own just by overwriting the 
helpinvoke. - Promise-Based safety: Every command will be executed in seperate threads which also will catch all exceptions thrown in the commands code.
 - Register your own logger classes based on the 
LoggerInterfaceif you want to log into a Database or whatever you want to do with it 
main.js
const discordjs = require('discord.js');
const CmdHandler = require('discordjs-cmds2').CmdHandler;
const DbDriver = require('./dbdriver');
// Create instance of discord.js Client
var client = new discordjs.Client();
// Create new instance of Command Handler
var cmdHandler = new CmdHandler(client, { prefix: 'bot!' })
    .setDatabaseDriver(DbDriver)
    .registerCommand(require('./testcmd'));
client.login('YOURTOKEN');dbdriver.js
const DatabaseInterface = require('discordjs-cmds2').DatabaseInterface ;
// For this simple example, we just use a JSON file as
// "Database". Of course, you can use a MySql connection
// or something like that for your project.
const database = require('./testdb.json');
module.exports = class DefDbInterface extends DatabaseInterface {
    constructor() {
        super();
    }
    getUserPermissionLevel(userID) {
        return new Promise((resolve, reject) => {
            resolve(database.perms[userID]);
        });
    }
    getGuildPrefix(guildID) {
        return new Promise((resolve, reject) => {
            resolve(database.guildpres[guildID]);
        });
    }
}testcmd.js
const Command = require('discordjs-cmds2').Command;
module.exports = class TestCommand extends Command {
    constructor() {
        super();
    }
    get invokes() {
        return ['test', 't'];
    }
    get description() {
        return 'Just for testing purposes';
    }
    get help() {
        return '`test` - execute test';
    }
    exec(options) {
        options.channel.send('Test! :ok_hand:');
    }
}For further examples how to use this package, take a look here.
- Sub-Commands
 - External command list (Markdown, HTML, ...)
 - Guild black (and white) listing
 - User black (and white) listing
 - Extended logging / Custom logging implementation
 
© 2018 - 2019 zekro Development
zekro.de | contact[at]zekro.de
MIT Licence
