Built-in MessageCreate Event
module.exports = {
name: "messageCreate",
execute(message, client) {
//the prefix(s) we set in our config.js file
const configPrefix = client.config.prefix;
//we're not listening for other bots that may ran our commands
if (message.author.bot) return;
// checks if prefix is a string and message start with the prefix
if (
typeof configPrefix === String &&
!message.content.startsWith(configPrefix)
)
return;
// checks if prefix is a array and message start with the prefix element
if (
Array.isArray(configPrefix) &&
!configPrefix.some((prefix) => message.content.startsWith(prefix))
)
return;
const prefix = Array.isArray(configPrefix)
? configPrefix.find((prefix) => message.content.startsWith(prefix))
: configPrefix;
//get the arguments of the command
const args = message.content.slice(prefix.length).trim().split(/ +/);
// the command name used to initate the command call
const command = args.shift().toLowerCase();
// check if the command is an aliases of a command or the command name
const cmd =
client.commands.get(command) ||
client.commands.get(client.aliases.get(command));
// get the user's permission level
// we use the built-in getPermissionLevel handler provided by DiscordeFeaturesHandler
const level = client.getPermissionsLevel({
author: message.author,
channel: message.channel,
guild: message.guild,
guildMember: message.member,
});
// if not a valid command then return
if (!cmd) return;
// if command is guildOnly and channel is a DM then return.
if (cmd.guildOnly && message.channel.type === "DM") {
return message.reply("I can't execute that command inside DMs!");
}
// get the permission level required to execute the command
const cmdPermissions = isNaN(cmd.permissions)
? client.levelCache[cmd.permissions]
: cmd.permissions;
// return a response if command is deny by permission level requirement
if (level < cmdPermissions) {
// don't show response if Bot Support or higher
if (cmdPermissions > 7 && client.config.hideDeniedBotAdminCommandsUsage) {
return console.log(
`[CMD DENIED]`,
`${message.content}`,
`${message.author.tag}`
);
}
return message.channel
.send(`You do not have permission to use this command.
Your permission level is ${level} (${
client.config.permissions.find((l) => l.level === level).name
})
This command requires level ${
client.config.permissions.find((l) => l.level === cmd.permissions).name
}} (${cmd.permissions})`);
}
//Check if cmd usage does NOT meet the usage criteria then return
if (
((!cmd.maxArgs || cmd.maxArgs === -1) && args.length < cmd.minArgs) ||
(cmd.maxArgs &&
cmd.maxArgs != -1 &&
(args.length < cmd.minArgs || args.length > cmd.maxArgs))
) {
return message.channel.send(
`Incorrect syntax usage! ${prefix}${command} ${cmd.usage}`
);
}
// now we try and execute the command.
try {
cmd.execute(message, args, client, level);
} catch (e) {
console.error(e, `Executing CMD: ${cmd.name}`);
message.reply("There was an error trying to execute that command!");
}
},
};Last updated