discord-cael

1.0.22 • Public • Published

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 });
            }
        }
	},
};

Readme

Keywords

Package Sidebar

Install

npm i discord-cael

Weekly Downloads

24

Version

1.0.22

License

ISC

Unpacked Size

13.6 kB

Total Files

4

Last publish

Collaborators

  • clutch152