How to Run a Python Discord Bot on a Docker Application
Introduction
Discord is a video, voice, and text communication platform that allows bots to perform automated tasks based on user commands. This article explains how to run a Python-based Discord bot on a Docker application.
1. Create a Discord Application
- Go to the Discord Developer Portal and log in.
- Click the New Application button.
- Enter an application name and click Create.
- Select the Bot tab from the Settings menu.
- Click Add Bot then click Yes, do it!.
- Click Copy to copy your bot's token to the clipboard. Save a copy to use later in this guide.
2. Install Prerequisites
- Deploy a Docker application on Ubuntu 20.04 cloud server Instance from Vultr Marketplace Apps
- Login as root
Install the Discord API wrapper for Python.
# pip install discord.py
3. Create the Discord Bot
Switch to your home directory.
# cd ~
Create a project folder.
# mkdir discord-bot
Switch to the project folder.
# cd discord-bot
Create a python file named
discord_bot.py
.# nano discord_bot.py
Paste this sample code to your
discord_bot.py
file. Replace<YOUR BOT TOKEN>
with the token you saved in section 1.import discord TOKEN = '<YOUR BOT TOKEN>' client = discord.Client() @client.event async def on_ready(): print('We have successfully loggged in as {0.user}'.format(client)) @client.event async def on_message(message): if message.author == client.user: return if message.content.lower() == 'hello': await message.channel.send(f'Hello, {message.author.display_name}!') return if message.content.lower() == 'bye': await message.channel.send(f'See you later, {message.author.display_name}!') return client.run(TOKEN)
The Discord bot should respond to commands such as
hello
, andbye
.Save and exit the file.
Create a
Dockerfile
.# nano Dockerfile
Paste this to your
Dockerfile
.FROM python:3 FROM gorialis/discord.py RUN mkdir -p /usr/src/bot WORKDIR /usr/src/bot COPY . . CMD [ "python3", "discord_bot.py" ]
Save and exit the
Dockerfile
.
4. Run the Discord Bot
Change to the Discord bot project directory.
# cd ~/discord-bot
Build the docker container for the Discord bot.
# docker build -t discord-bot .
Run the docker container.
# docker run -d discord-bot
Running the bot with
-d
flag runs the container in detached mode (it runs in the background).
Common Docker Commands:
List all docker processes:
# docker ps
Stop the docker container (discord bot):
# docker stop <CONTAINER ID>
Restart the docker container:
# docker restart <CONTAINER ID>
You can find the <CONTAINER ID>
when you list all the Docker processes.
5. Invite the Bot to a Discord Server
- Go to the Discord Developer Portal and log in.
- Click the Application that you have created.
- Navigate to the OAuth2 Tab from the Settings menu.
- In the Scopes Section, select bot.
- In the Bot Permissions Section, select Administrator. This gives the bot an Administrator Role from the Discord Server.
- Click the Copy Button to copy the generated invite link.
- Open the invite link on your browser.
- Select the Discord server to add the bot to then click Continue.
- Authorize the bot and complete the CAPTCHA.
The Discord bot is now up and running.
More Information
To learn more about Discord bots, please see these resources: