What should you concern about developing a Discord Bot (Jet Brawley)
Tags: javascript, discord, api, jetbrawley
Published: 2022-11-26 18:12:19

## Introduction
Hey everyone, I'm the developer of [Jet Brawley](https://brawley.js.org) & few other [Discord Bots](https://github.com/BotStudios). Today, I'd like to share with everyone about my personal experience as a bot developer, as well as things that you need to know before or during the process of developing your [Discord Bot](https://discord.com). 
![from Discord Blog](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j638sqoj0mjzalns18hd.png)
As a disclaimer, this is not a tutorial on creating a Discord Bot. I wrote this post to help those who are serious about creating a unique and useful Discord Bot.

## Prerequisites
- **Device**
![from Apple Newsroom](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l7d4cko3xva7uljsmkf2.png)
Yes, you can use a phone or tablet to code, but you should always avoid using them as it significantly slow down the development process.

- **Codespaces**
![Coding](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sf3a81shkcc1dxalcky9.png)
There are many coding IDEs out there, avoid using notepad or normal text editor for programming.

- **Skills**
The level of your coding skills & how experienced you are with programming isn't the top priority of creating an awesome Discord Bot but don't get me wrong, you do need to have a fairly decent grasp of a programming language in order to get started. 

Those who had never create a Discord Bot before, you should start playing around with the Discord API libraries of the programming language that you're going to use.

## Idea
![Idea](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wwrpkujoyna2cji92wnk.png)
Don't get started from nowhere.

So, you are trying to create a unique & useful bot, here's a few ideas that you should forget about.

1. **Features that an existing bot offers** (or similar features) unless you're able to improve it on your own way that can attract new users that are looking for a bot that offers that specific feature)

2. **Things that don't make sense.** You should be clear of what bots on Discord can and can't do. 


### Sketch/list down your ideas
You've had lots of ideas in mind, now just list them out like a todo list.

Here's an example: 
```
- [news] command
  - Make a request to example.com and fetch the latest news
  - In embed form
  - Include links to the post
- [getnews] command
  - Make a request to example.com/getnews and fetch the specific news article
  - an option to choose category and search parameter option that is required
```

## Getting Started
![from Discord App Discovery](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pjecilg6e2z0w7phs5cd.png)
First, you'll have to find out privileges that your bot needs. For instance, the message content privilege is required in order to read messages. (Tip: the use of message content privilege should be avoided for command purpose)
![Open Library](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pto5qjkgei7iylhwjs0h.png)
Finally, learn how to use the library and creating an application on Discord (this process should be easy). It shouldn't be too complex if you're familiar with the programming language.
In order to simplify the process, you should probably develop a bot with the programming language that you are most familiar with. (To give yourself a challenge, you can try developing your Discord bot with a programming language that you're not familiar with, that's a way of improving your skills)

I'd always encourage programmers to write down another todo list, make a planning for the development process of your bot. Don't worry as I will walk you through the process.

1. **Libraries that you need for your project (bot).** Try to list down every library that you'll be using for your project. *Try to include what you're going to use them for.* 
Example: 
```
- discord.js // interact with Discord API
- axios // Make http request to example.com, fetch the API
- mongoose // Store user data 
```

2. **Explaining what you are trying to do.** You've listed out the commands that you're going to work on, now make it clearer, almost like documenting what you're trying to do with your own way. For Example:
```
- When a user runs /news
    1. Reply with the thinking message 
    2. Fetch example.com/news
    3. Create an embed
       - Title: Example news
       - Description: Today's news
       - Fields: an array of objects (name: the article name, value: the article brief)
    4. Edit the message 

- When a user runs /help
    1. Create an embed
    2. A guide on how to use the bot
    3. reply interaction
           
 ```

Yes, I know, this sounds like an extra work, but this really comes in handy if you're working on a complex and challenging project. But it is definitely a good practice.

## Coding
![Coding](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/irngwljxud2hncptkt3y.png)
1. **Use code formatting tools.** This makes your code more user readable. 
2. **Explain your code.** Adding a comment to explain or describe about your code does allow you to debug your project with less hesitation.
3. **Keep it clean & organized.** Your code/files should be organized in a way that makes it easy for you to find a piece of code. Here's an example: <br>![Organized](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7x3ylbm80qeuahmua729.png)
4. **Remove unused code.** Some code editors tell if a function or variable is not in used, you should probably get rid of them.

## Best Practices
- **Keep your bot up to date.** Update your libraries, keep improving your bot
- **User feedback.** Take note on every feedbacks from users, try to improve them
- **Remove unused registered slash commands**
- **Test your bot before deploying as a production**
- **Adding features.** Adding features to your bot will attract more users
- **Get your bot verified.** 

## Thanks for reading !!
This is my very first post, hope everyone had learned something new. 
Feel free to leave a comment down below !

Check out **Jet Brawley**
- [Website](https://brawley.js.org)
- [Twitter](https://twitter.com/JetBrawley)
- [Source Code](https://github.com/BotStudios/Jet-Brawley)