A simple Discord bot command handler that is easy to use, built for Discord.js
const { client } = new SimplyDiscord({
defaultPrefix: '-',
commandsDir: './commands',
eventsDir: './events',
allowDMs: false
})
.setGuildPrefix('GUILD_ID', 'NEW_PREFIX')
.setCommandsDir('NEW_DIRECTORY')
.setEventsDir('NEW_DIRECTORY')
.setDefaultPrefix('NEW_DEFAULT_PREFIX')
.toggleDMs()
.reload();
Params:
Param | Type | Info |
---|---|---|
client | Discord.Client |
The Discord client, if not passed one will be created |
options | object |
More info below |
Available Options:
Option | Type | Default | Info |
---|---|---|---|
options | object |
undefined |
Options to configure the handler |
options.defaultPrefix | string |
! |
Default prefix to use in-case of no guild prefix |
options.commandsDir | string |
./commands |
Folder containing all your commands |
options.eventsDir | string |
./events |
Folder containing your event files |
options.allowDMs | boolean |
true |
Bot should respond in DMs? |
// Example Functions
const Handler = new SimplyDiscord();
// Set the guild prefix
Handler.setGuildPrefix('714478443099873310', '-');
// Set the dir but do not reload commands
Handler.setCommandsDir('./commands/sub', false);
// Set the events dir
// By default it will reload commands/events
Handler.setEventsDir('./events/new');
// Manually reload commands/events (Default will reload both)
Handler.reload('commands'); // Reload just commands
Handler.reload('events'); // Reload just events
Handler.reload(); // Reload both
// Toggle DMs (Specify true/false or it will flip the current state)
console.log(Handler.allowDMs) // Output -> True
Handler.toggleDMs();
console.log(Handler.allowDMs) // Output -> False
Function | Params | Info |
---|---|---|
setCommandsDir | ('Directory') |
Update the folder where your commands are located |
setDefaultPrefix | ('Prefix') |
Update the default prefix |
setGuildPrefix | ('GuildID', 'Prefix') |
Set the guild prefix to the client.prefixes collection |
setEventsDir | ('Directory') |
Update the folder where your events are located |
toggleDMs | (true/false) |
Toggle if DMs should be allowed, sending nothing with switch it |
reload | ('commands'/'events') |
Reload commands/events or both |
Using the handler:
const Discord = require('discord.js');
const SimplyDiscord = require('simply-discord');
const client = new Discord.Client();
new SimplyDiscord(client, {
commandsDir: 'lib/commands'
});
Note: Simply Discord will create a client for you if you don't provide one
const SimplyDiscord = require('simply-discord');
/* Client is a property of the SimplyDiscord Class, use this to access the Discord Client */
const { client } = new SimplyDiscord({ commandsDir: 'lib/commands' });
/* Assign it to a variable and use that to access the props and functions */
const simply = new SimplyDiscord({ commandsDir: 'lib/commands' });
const client = simply.client;
/* Minimum usage */
const simply = new SimplyDiscord();
module.exports = {
name: 'ping',
aliases: ['p'],
category: 'Utils',
cooldown: 10, /* In seconds, this example is 10 seconds */
async run ({ client, handler, message, args }) {
// Your command code ...
}
};
module.exports = {
name: 'ready',
once: true,
async run (client, handler, EVENT_PARAMS) {
/*
EVENT_PARAMS are any params from the event itself,
check the Discord.js Docs for more info.
*/
}
};
Future Ideas
-
Look into finding a better way to handle the guild checking.
- Relates to index.js Message event get prefix.
- Add setCooldown(time, guildWide) set the time and if to apply to everyone in the guild.
- Add toggleCooldown(true) set the cooldown to True/False or toggle on/off