An Awesome Clear Command For Your Discord.JS Bot
Tags: javascript, node, discord, beginners
Published: 2021-04-04 11:05:36

## What is our goal with this new command?
My goal with this post is, to show you how to program a well structured clear command. At the end it is able to clear a specific amount of messages posted in a Discord textchannel.
What will the command look like when we are done?

> ?clear {amount of messages that should be deleted}

**Example:** ?clear 50

## Let’s start with programming
**First of all**, we start with the basic setup of our new command.

```
const args = message.content.split(' ').slice(1); // All arguments behind the command name with the prefix
```

With this line of code we get all the content **behind** the prefix with the commandname. In this case, **everything behind** `?clear`.

*Example*: If you enter the command in a Discord textchannel `?clear 50` , args will be `[ 50 ]` (which is an array).

```
const args = message.content.split(' ').slice(1); // All arguments behind the command name with the prefix
const amount = args.join(' '); // Amount of messages which should be deleted
```

**Now**, we’ve added a new line which just makes it **simpler** to read the amount of messages which should be deleted. For this we simply need to `join()` the array. If you don’t know the function of `join()`, you can read more [here](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join).

```
const args = message.content.split(' ').slice(1); // All arguments behind the command name with the prefix
const amount = args.join(' '); // Amount of messages which should be deleted

if (!amount) return msg.reply('You haven\'t given an amount of messages which should be deleted!'); // Checks if the `amount` parameter is given
if (isNaN(amount)) return msg.reply('The amount parameter isn`t a number!'); // Checks if the `amount` parameter is a number. If not, the command throws an error
```

**2 new lines. The first one** checks if the amount parameter is given. If not, the bot (command) **throws an error** that this parameter is needed to execute this command.

**The next one** checks if the amount parameter is even a number because an amount **can only be an integer** (a number) and can’t include letters.

```
const args = message.content.split(' ').slice(1); // All arguments behind the command name with the prefix
const amount = args.join(' '); // Amount of messages which should be deleted

if (!amount) return msg.reply('You haven\'t given an amount of messages which should be deleted!'); // Checks if the `amount` parameter is given
if (isNaN(amount)) return msg.reply('The amount parameter isn`t a number!'); // Checks if the `amount` parameter is a number. If not, the command throws an error

if (amount > 100) return msg.reply('You can`t delete more than 100 messages at once!'); // Checks if the `amount` integer is bigger than 100
if (amount < 1) return msg.reply('You have to delete at least 1 message!'); // Checks if the `amount` integer is smaller than 1
```

**Again 2 new lines**. These lines should not be complicated at all. **The first one** checks if the amount integer **is bigger than 100**, if yes the bot throws an error. **The same for the next line**, only that it checks if the integer (amount parameter) is **smaller than 1**. If you don’t know why the maximum can only be 100; **this is due to the Discord API**, it only allows a bot application to fetch 100 messages at once. More can be found [here](https://discord.com/developers/docs/resources/channel#get-channel-messages).

```
const args = message.content.split(' ').slice(1); // All arguments behind the command name with the prefix
const amount = args.join(' '); // Amount of messages which should be deleted

if (!amount) return msg.reply('You haven\'t given an amount of messages which should be deleted!'); // Checks if the `amount` parameter is given
if (isNaN(amount)) return msg.reply('The amount parameter isn`t a number!'); // Checks if the `amount` parameter is a number. If not, the command throws an error

if (amount > 100) return msg.reply('You can`t delete more than 100 messages at once!'); // Checks if the `amount` integer is bigger than 100
if (amount < 1) return msg.reply('You have to delete at least 1 message!'); // Checks if the `amount` integer is smaller than 1

await msg.channel.messages.fetch({ limit: amount }).then(messages => { // Fetches the messages
    msg.channel.bulkDelete(messages // Bulk deletes all messages that have been fetched and are not older than 14 days (due to the Discord API)
)});
```

**The first new line fetches all messages.** The limit is the above given amount parameter (To revise: This is the number behind the `?clear` command). Then we continue to the main function of this command; Bulkdelete. The bot now bulkdeletes all messages that have been fetched.

##### Be careful! The messages can not be older than 14 days (again due to the Discord API).

## Conclusion
I hope I could help you a little bit with your bot and the setup of your clear command. If you have any questions, just comment below!

![Photo by Paweł Czerwiński on Unsplash](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bmjibboh1n4mw3hgy4lx.jpg)
Photo by Paweł Czerwiński on Unsplash