discord-cael
v1.0.22
Published
Loads slash commands and events for you!
Downloads
28
Readme
About
CAEL = Command And Event Loader
Small package for use with discord.js.
- Will create the following directories in the root of your bot directory:
- ./events/client
- ./commands
- The ./events/client assumes that you might use discord-player and want to use an events directory to load those separatly.
Load order
- Events get loaded immediatly
- Commands should get loaded after bot has become "ready"
Note
Still working on error handling
Installation
Created in Node.js v22.1.0 and discord.js v14.15.2
npm install discord-cael
Public functions
//Once you have a CAEL object...
//If you created new commands for a specific guild while the bot is
// running then you can use this to Load/Register them
cael.RegisterCommands(guildID)
//If you need to delete commands or give a guild admin the ability
// to delete a command then you can use this function
cael.DeleteCommand(options)
//The options for the previous function is in the form of an object:
const options = {
guilds: [], //List of guild ids (When empty will switch to global mode! BE CAREFUL!)
commands: [] //List of command ids (When left empty it will delete ALL commands! BE CAREFUL!)
};
index.js Example
const { Client, Collection, GuildMember, Events, IntentsBitField } = require("discord.js");
const { CAEL } = require('discord-cael');
const config = require("./config.json");
const client = new Client({
intents: [
IntentsBitField.Flags.Guilds,
IntentsBitField.Flags.GuildMessages,
IntentsBitField.Flags.GuildVoiceStates,
IntentsBitField.Flags.MessageContent,
IntentsBitField.Flags.GuildIntegrations
]
});
//Create a variable to contain to prevent garbage collection.
const cael = new CAEL(client, config.token);
client.login(config.token);
Specify specific guild only commands
const { SlashCommandBuilder } = require('discord.js');
module.exports = {
data: new SlashCommandBuilder()
.setName('test')
.setDescription(`Test command for purposes of discord-cael README.md`),
guilds: [
/* INSERT GUILD IDs INTO THIS ARRAY IF YOU WANT THEM TO LOAD FOR SPECIFIC GUILDS */
]
async execute(interaction) {
}
Grabbing CAEL from module
const { Events } = require('discord.js');
const { GetCAEL } = require('discord-cael');
module.exports = {
name: Events.InteractionCreate,
async execute(interaction) {
if (!interaction.isChatInputCommand()) return;
const CAEL = GetCAEL();
if (!CAEL) {
console.log('ERROR: Failed to get instance of CAEL in InteractionCreate event!');
return;
}
const command = CAEL.commands.get(interaction.commandName);
if (!command) {
console.error(`No command matching ${interaction.commandName} was found.`);
return;
}
try {
await command.execute(interaction);
} catch (error) {
console.error(error);
if (interaction.replied || interaction.deferred) {
await interaction.followUp({ content: 'There was an error while executing this command!', ephemeral: true });
} else {
await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true });
}
}
},
};