A simple discord bot that helps you manage your server by providing useful commands like playing music or deleting text messages.
You can find the tutorial about building a discord music bot here.
First, make sure you have all the required tools installed on your local machine then continue with these steps.
# Clone the repository
git clone https://github.com/TannerGabriel/discord-bot.git
# Enter into the directory
cd discord-bot/
# Install the dependencies
npm install
# Configure Discord Bot Token
echo "DISCORD_TOKEN='INSERT_YOUR_TOKEN_HERE'" > .env
Currently we also need to set the DP_FORCE_YTDL_MOD
environment variable to override ytdl-core
for the discord-player
.
DISCORD_TOKEN=INSERT_YOUR_TOKEN_HERE
DP_FORCE_YTDL_MOD="@distube/ytdl-core"
Make sure that your bot has the applications.commands
application scope enabled, which can be found under the OAuth2
tab on the developer portal
Enable the Server Members Intent
and Message Content Intent
which can be found under the Bot
tab on the developer portal
After cloning the project and installing all dependencies, you need to add your Discord API token in the .env
file.
You can change the status of your discord bot by editing the activity
and activityType
variables inside the config.json
file. activityType
needs to be set to an integer with the following options.
node index.js
# Build the image
docker build --tag discordbot .
# Run the image
docker run -d discordbot
Before you can use the bots slash command you first need to add them to your Discord server. You can use the !deploy
command to do so.
After deploying the commands you should be able to see and access them by typing a slash:
A mutliarch docker image for amd64
and arm64
based on the main branch is available from Github Container Registry:
docker pull ghcr.io/TannerGabriel/discord-bot:latest
A Github Action automatically builds and push amd64
and arm64
to ghcr.io, all builds are based on the main branch.
Only :latest
tag is supported, otherwise use SHA256 from https://github.com/TannerGabriel/discord-bot/pkgs/container/discord-bot for pinning to a specific commit.
Note: The repository now uses the new Discord slash commands
- Play
- Pause
- Resume
- Now Playing
- Queue
- Shuffle
- Loop
- Skip
- Remove
- Move
- Swap
- Stop
- Volume
- Help
- Userinfo
- Ban
- Purge
/play YOUTUBE_URL
/play SONG_NAME
/playtop YOUTUBE_URL
/playtop SONG_NAME
⏸️ Pause music
/pause
/resume
🎶 Display current playing song
/nowplaying
🗒️ Display the current queue
/queue
🔀 Shuffle the current queue
/shuffle
🔁 Loop/Repeat controls. Off, Track and Queue
/loop MODE
⏭️ Skip the current playing song and play the next in queue
/skip
⏏ Remove song from the queue
/remove POSITION
↕ Move song position. This shifts all other songs up or down one, depending on direction you move the target song.
/move TRACK_POSITION TARGET_POSITION
/swap POSITION_1 POSITION_2
🔇 Stop playing (disconnects bot from voice channel)
/stop
🔊 Adjust the music bot volume between 0-200
/volume NUMBER
❓ Display commands
/help
- Get information about a user (/userinfo USER)
- Ban a player (/ban USER)
- Delete the latest chat messages (/purge NUM_OF_MESSAGES)
Here is a list of common errors and how you can fix them.
The packages used in this repository get updated often, especially the ytdl-core package. That is why it is always worth a try updating those if you get an error like invalid URL: undefined
or when the bot crashes when running the play command.
npm install ytdl-core@latest
The play
command requires FFMPEG to be installed on the machine that is running the bot. You can download it on the official FFMPEG website. Note: This isn't relevant if you use the Dockerfile because it will install FFMPEG inside of the container.
You are welcome to contribute by submitting a Pull Request to the repository.
This project is licensed under the MIT License - see the LICENSE.md file for details