How to make a Discord bot

Need a bot to watch your Discord chat while you're away? Here's how to make one

Update 8/21/2018: Made some changes to code, added some additional instructions to resolve two common errors some readers encountered during the tutorial.

The rise of Discord, a chat and voice program favored among gamers, has made it fairly common for Internet denizens to find themselves hanging around “Discord servers” based on a variety of topics. One of the best things about Discord, in fact, is that you can easily make a free server of your own, deck it out with channels, and invite whoever you want to take part in it.

(If you’re not up on Discord, read our full rundown of what the service is and how it works.)

One of Discord’s coolest features is the ability to create automated users — bots — that can perform various functions. Those bots are coded in JavaScript, and can become rather complex. They do things like play music for users in a server, greeting new users when they arrive, and more.

Creating your own Discord bot doesn’t take much effort, even if you’re new to coding and JavaScript in general. Here’s everything you need to know to make a (super, super simple) Discord bot of your own.

Step 1: Download Node.js and set up a Discord account if you haven’t

Node.js is a JavaScript runtime that’s free and open source, and you’ll need it to actually make your bot, uh, work. Download it at nodejs.org and install it before you get started on anything else.

Obviously, you’ll also need a Discord account, and your own server to use to test your bot. If you haven’t created one yet, go to Discordapp.com and create one. If you do have one, login to your account and open up the server in which you want your bot to live.

You’ll also need a text editor program, like Notepad++ on Windows, to code with.

Step 2: Create your bot

how to make a discord bot my apps

Now you’ll need to create an “application” on Discord to make your bot work. This takes a little doing, but it’s not too complex. The goal here is to get an “authorization token” for the bot so that Discord recognizes your code and adds it to the bot on its servers.

First, head to discordapp.com/developers/applications/me. Your account should be logged in, so you’ll go straight to your account’s list of applications. Hit “New Application” to get started. Give the bot a name, then hit the button marked “Save Changes.”

Now, on the right-hand menu, click “Bot.” Once in the new menu, click “Add Bot” under the Build-a-bot option. If you only have one application — the one we just made — it should appear automatically. Otherwise, select it.

Step 3: Get your bot’s authorization token

how to make a discord bot bot box

In the box marked “App Bot User,” look for the words “Token: Click to reveal.” Click that link and you’ll reveal a string of text. That’s your bot’s authorization token, which allows you to send it code. Don’t share it with anyone — that token allows whoever has it to create code for the bot, which means whoever has it can control your bot. If you think the token has been compromised, the good news is that you can easily generate a new one with the link right under the token, which reads “Generate a new token.”

You’ll need that token in just a second.

Step 4: Send your bot to your server

how to make a discord bot connect to discord

Now scroll up to the box marked “App Details” and find your “Client ID,” a long number. Copy the number and add it to this URL, in the place of word CLIENTID.

https://discordapp.com/oauth2/authorize?&client_id=CLIENTID&scope=bot&permissions=8

The final URL should look like this, but with your client ID number in it instead of this fake one:
https://discordapp.com/oauth2/authorize?&client_id=000000000000000001&scope=bot&permissions=8

Copy the URL with your client ID number in it into your browser. That’ll take you to a website where you can tell Discord where to send your bot. You’ll know it worked if you open Discord in an app or in your browser and navigate to your server. The channel will say a bot has joined the room, and you’ll see it on the right side menu under the list of online members.

Step 5: Create a “Bot” folder on your computer

how to make a discord bot folder

While you’re doing that, you can also take a moment to create a folder in an easy-to-reach place on your computer where you can store all your bot’s files. Call it something simple, like “DiscordBot” or “MyBot” so you know exactly what it is.

Step 6: Open your text editor and make your bot’s files

how to make a discord bot package code

You’re going to create three files for your bot from your text editor. In the first, paste this code:

{
“token”: “Your Bot Token”
}

Replace “Your Bot Token” with the token you generated earlier on your bot’s application page. Make sure the token is inside the quotation marks. Then save the file into the Discord bot folder you made on your desktop, using the filename “auth.json.” Remember not to save it as a .txt file — it won’t work if it’s .txt instead of .json.

Make a new file, and put in this code:

{
“name”: “greeter-bot”,
“version”: “1.0.0”,
“description”: “My First Discord Bot”,
“main”: “bot.js”,
“author”: “Your Name”,
“dependencies”: {}
}

Replace the author name with your name if you want; you can also change the “description” to something other than “My First Discord Bot” if you want something more in line with what you’re making, which will be handy for remembering what your bot is supposed to do.

Save this file as “package.json” in your Discord bot folder.

Step 7: Define your bot’s code

how to make a discord bot botjs

There’s one more text file to make, and this is the important one that controls your bot’s behavior. You’ll want to be familiar with JavaScript to really have full control of your bot and know what you’re doing, but if you’re new to coding and just want to make something, you can copy and paste this code into the file to make a simple bot that will greet you in your server.

(Thanks to Medium user Renemari Padillo, whose bot tutorial helped us create this one. Check out his tutorial for code troubleshooting and other advice.)


var Discord = require('discord.io');
var logger = require('winston');
var auth = require('./auth.json');
// Configure logger settings
logger.remove(logger.transports.Console);
logger.add(new logger.transports.Console, {
    colorize: true
});
logger.level = 'debug';
// Initialize Discord Bot
var bot = new Discord.Client({
   token: auth.token,
   autorun: true
});
bot.on('ready', function (evt) {
    logger.info('Connected');
    logger.info('Logged in as: ');
    logger.info(bot.username + ' - (' + bot.id + ')');
});
bot.on('message', function (user, userID, channelID, message, evt) {
    // Our bot needs to know if it will execute a command
    // It will listen for messages that will start with `!`
    if (message.substring(0, 1) == '!') {
        var args = message.substring(1).split(' ');
        var cmd = args[0];
       
        args = args.splice(1);
        switch(cmd) {
            // !ping
            case 'ping':
                bot.sendMessage({
                    to: channelID,
                    message: 'Pong!'
                });
            break;
            // Just add any case commands if you want to..
         }
     }
});

This code sets up a Discord bot that will respond to certain messages: Specifically, anything that starts with a “!” character. In particular, we’re programming the bot to respond to the command “!intro”, so if anyone types that in your server while the bot is in it, the bot will respond with a programmed message. In our code, we defined the message as “Greetings! Welcome to the server!” You can change both the prompt message and the response message by redefining them in the code above. Just make sure to maintain the single quotation marks around the messages.

Save this last text file as “bot.js” in your Discord bot folder.

Step 8: Open your computer’s “Command Prompt” and navigate to your Discord bot folder

how to make a discord bot command prompt

On a Windows PC, you can easily get to the Command Prompt by clicking the Windows icon and typing “Command Prompt” in the field. Once it’s open, type “cd” followed by the file path to your folder. On my computer, the command looks like this: “cdUsersPhil’s DesktopDesktopDiscordBot”. That should change the command prompt line to include the file path to your folder.

Alternatively, you can navigate to your folder in Windows and hold Shift while right-clicking on a blank area of the folder, and choosing “Open Command Prompt.”

Step 9: Use the Command Prompt to install your bot’s dependencies

how to make a discord bot command prompt node bot js

Now it’s time to make use of Node.js. In the Command Prompt, with your Discord bot folder in the file path line, type “npm install discord.io winston –save.” This will automatically install files you need to for your Discord bot into the folder directly.

Also use the following command line prompt to install additional dependencies: npm install https://github.com/woor/discord.io/tarball/gateway_v6

That should provide you with all the files you need.

Step 10: Run the bot

how to make a discord bot test

That should be everything. To try running your bot, type “node bot.js” in the Command Prompt (make sure you’re still navigated to your Discord bot folder).

Now head back to your Discord server and try testing your bot by typing “!intro,” or “!” followed by whatever you made your prompt message in your “bot.js” file. If everything went correctly, your bot should immediately return the message you coded for it.

Congrats! You just made a Discord bot!

Step 11: Figure out if your bot has been made by someone else

Discord has a big community of people making stuff for the greater good of the service all the time, and that includes bots. There are whole databases of bots other people have made that perform a variety of functions, and often their creators make those bots available for anyone to download and use. Save yourself some time and some coding by checking out some of the usual places where Discord bots are found, to see if someone has already done your work for you.

Some handy places to search for Discord bots are discordbots.org and bots.discord.pw, but you’re also likely to have luck googling for what you need, as well.

Computing

Faster new PCIe 5.0 standard leapfrogs the best feature of AMD’s Ryzen 3

PCIe 5.0 will bring even faster data transfers, but it may only be found on HPCs and servers initially. The standard is four times faster than your current PC at transferring data, and new devices could appear later this year.
Mobile

Having trouble logging in? Here's how to reset your Apple ID password

To use any of Apple's services, you need to have an Apple ID and know your password. Thankfully, there are ways to deal with forgotten passwords and regain access to your account. Here's how to reset your Apple ID password.
Computing

Lost your router? Here's how to find its IP address to help track it down

Changing the login information for your router isn't always easy, that's why so many have that little card on the back. But in order to use it, you need to know where to go. Here's how to find the IP address of your router.
Computing

Change your mouse cursor in Windows with these quick tips

The standard mouse cursor is boring, so change it! With this guide on how to change your mouse cursor in Windows, you can choose to use one of Microsoft's pre-installed cursors or download something a bit more extravagant.
Gaming

‘Mortal Kombat 11’ is even gorier and crazier than we expected

NetherRealm Studios unveiled Mortal Kombat 11 on January 17 and the game looks to be just as gory and over the top as fans have come to expect. Former MMA fighter Ronda Rousey will appear as Sonya Blade.
Gaming

Get extra life with our tips and tricks for 'New Super Mario Bros. U Deluxe'

New Super Mario Bros. U Deluxe is a much more difficult game than you'd believe based on its adorable art style and 2D perspective. Here's how you can master the game's toughest challenges.
Gaming

For Netflix, ‘Fortnite’ on YouTube is a bigger threat than HBO

In a letter to shareholders, Netflix explained that it views the video game Fortnite as bigger competition than HBO, with YouTube videos of the game drawing viewers away from the streaming platform.
Gaming

Find all of the secret exits and world skips in 'New Super Mario Bros. U Deluxe'

New Super Mario Bros. U Deluxe has two distinct Mario experiences in one package. In this guide, we'll show you how to find all of the secret exits in New Super Mario Bros. U, that lead to hidden levels and let you skip worlds.
Gaming

Find all of the secret exits and world skips in 'New Super Luigi U Deluxe'

Just like all other 2D Mario games, New Super Mario Bros. Deluxe includes secret exits and world skips. In this guide, we'll show you how to get to all 12 secret exits in New Super Luigi U.
Gaming

Take a trip to a new virtual world with one of these awesome HTC Vive games

So you’re considering an HTC Vive, but don't know which games to get? Our list of 25 of the best HTC Vive games will help you out, whether you're into rhythm-based gaming, interstellar dogfights, or something else entirely.
Gaming

Here's where Xur is and what he has for wares this week in 'Destiny 2: Forsaken'

The weekly vendor in Destiny 2: Forsaken always brings Exotic weapons and armor, some of the toughest loot to find in the game. Here's everything you need to know to track down Xur: Where he is, when he shows up, and what he's stocking.
Computing

You could be gaming on AMD’s Navi graphics card before the end of the summer

If you're waiting for a new graphics card from AMD that doesn't cost $700, you may have to wait for Navi. But that card may not be far away, with new rumors suggesting we could see a July launch.
Gaming

Sharing your best gameplay moments is quick and easy on the Xbox One

The current generation of consoles make it easier than ever to share your gaming highlights with the world. Here's a quick guide on how you can record a gameplay video on Xbox One.
Gaming

Blizzard’s latest hiring spree is likely for the unannounced ‘Diablo 4’

Activision Blizzard is hiring for more than a dozen positions on unannounced Diablo projects. Some of the roles are likely for the unannounced Diablo 4, the next mainline entry in the series.