So you want a command that deletes XX messages from the current channel? Let’s try and get that command build!
Note! This article assumes that you have a running bot and a simple command handler. I will be showing a simple command that deletes up to 100 (Discords API limit) messages, but not older than 14 days (again Discord API limit).
const Prefix = '!'; //This is the prefix the message has to start with, to invoke the command if (message.content.startsWith(Prefix + 'delete')) { //the prefix + 'delete' states that the command is: delete
Basically we want to say: !delete 25, and that should delete the latest 25 messages in that channel.
No we need to get that number into a variable, and that’s simple enough:
const args = message.content.split(' ').slice(1); //Splits the message into pieces, and removes the first (command) from there const amount = args.join(' '); //We want the argument (number) to be the amount, so we do a join on the arg.
Next we want to check that the user did in fact specify a second argument, and that that argument is a numeric value:
if (!amount) return message.reply(`You need to specify an amount of messages to delete!`); // If amount isn't set, then return a message to the channel. if (isNaN(amount)) return message.reply(`You need to use a numeric value to use this command`); //isNaN is a JavaScript function and stand for is Not-a-Number
Further more, we need to check if the number provided is over the Discord API limit:
if (amount > 100) return message.reply(`You can't delete more than 100 messages in this function`);
Right, checks are done and we can now start deleting messages from the current channel: (Note the use of await, so this needs to be in an async function!)
await message.channel.messages.fetch({ limit: amount }) //Specify the limit (amount) of messages to fetch. .then(messages => { // Fetches the messages from the current channel message.channel.bulkDelete(messages); // bulkDelete is a function and deletes all messages that have been fetched and are not older than 14 days (due to the Discord API) });
Congratulations! You now have the command: !delete that can delete up to 100 messages from the channel, that aren’t older than 14 days.
This command can be built upon and in a future post I will give a more in-depth use of this feature.