A Python-based Discord bot that works out-of-the-box for anyone who needs to play music on Discord.
Why did I make this?
- A while back, a friend asked me for YinXi (my other bot). Later, I read a post by YeeCord and realized just how difficult maintaining music bots has become these days.
-
Since I already had YinXi, I thought: if I just split out the music-related code and made a dedicated music bot,
would it go viral? -
Plus, if yt-dlp keeps sending requests from the same IP, it's super easy to get hit with 403 (Forbidden) errors or other issues.
(This is probably why there are fewer and fewer music bots; finding a stable source is genuinely tough)
But if every user just self-hosts their own Discord bot based on their own needs, wouldn't that solve the problem? - So, I made TuneZ.
Why is it called TuneZ?
- The reason is actually super simple.
-
I just asked Copilot to come up with a name, and it gave me "Tune".
Then I thought, people born around the year 2000 are called Gen Z.
So "Z" appeared.
Combine them, and you get TuneZ.
Are there any risks?
- The answer is also simple: not if you use it for yourself.
- Usually, nothing bad happens with this kind of stuff if you use it yourself or just let friends use it.
-
Unless you decide to use it for profit.
Then you can't blame me :)
I'm not taking responsibility for that.
TuneZ supports Chinese. It's just showing English because my Discord default language is English.

Comes with light blue animated emojis
Customizable emojis
❗Pay attention to image filenames (excluding extension); they must match the filenames in assets/emojis❗ Example:list.gif → list.png
-
On Windows, go to
C:\Users\USERNAME\AppData\Roaming\Easy Music Bot\data\emojisand you can put your own images there. -
In other environments, upload custom images to
./data/emojis/. -
Finally, use
/reload_emojisin your Discord channel to reload the emojis.
Simple and easy to start
- Windows users can open TuneZ directly via the .exe file.
- Users in other environments can launch it directly using Docker.
-
Or, after installing dependencies, just run
main.py.
1. If you simply want a Discord music bot, you can just invite YinXi to your server. This was my very first project.
❗If you don't have a Discord Bot yet, go to this file for a tutorial first❗
❗Except for using the .exe, other methods currently require you to Clone/Download the project first❗
git clone https://github.com/NotKeKe/TuneZ-Discord-Bot.git
-
Windows
Using .exe
- Go to Releases and download the version that suits you (currently there should only be an .exe)
-
Run
windows.exe
After running it, it will normally close itself first because it's just copying necessary resources out. -
Go to the Roaming directory
It should usually be in this format (change USERNAME to your own and you should find it):C:\Users\USERNAME\AppData\Roaming\Easy Music Bot -
Find
.envand open it with any text editor you like. -
Enter your DISCORD_TOKEN
Paste the Bot Token you just created on the Discord Developer site into DISCORD_TOKEN. The result should look like this:(OWNER_ID is your own Discord ID. Everyone's is different. Mine is 7038778.... It's fine even if you leave it blank; currently, it's only used when `reload_emojis` is needed.)DISCORD_TOKEN = MTQ0Nz.....
OWNER_ID = OWNER_ID -
Re-open
windows.exe
Use /play to start playing music!
-
Docker Compose
-
Rename
.env.exampleto.envcp .env.example .env -
Fill in your own Discord Bot Token
Something like this:(OWNER_ID is your own Discord ID. Everyone's is different. Mine is 7038778.... It's fine even if you leave it blank; currently, it's only used when `reload_emojis` is needed.)DISCORD_TOKEN = MTQ0Nz.....
OWNER_ID = OWNER_ID -
Create logs and data directories
(logs are mainly for checking errors; data is for storing user custom playlists, url cache, etc...)mkdir -p data logs -
Start with docker compose
docker compose up -d
-
Rename
-
This project uses uv to manage dependencies and virtual environments (venv), so I'm recommending uv here.
-
Install uv (Pick the method that suits you best)
-
Using pip:
pip install uv -
Windows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" -
macOS or Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh - For more methods, visit the uv official site
-
Using pip:
-
Rename
.env.exampleto.env -
In
.env, fill in your Token
Something like this:(OWNER_ID is your own Discord ID. Everyone's is different. Mine is 7038778.... It's fine even if you leave it blank; currently, it's only used when `reload_emojis` is needed.)DISCORD_TOKEN = MTQ0Nz.....
OWNER_ID = OWNER_ID -
Sync the virtual environment
uv sync -
Run the program
uv run main.py
-
Install uv (Pick the method that suits you best)
- Remember to give me a Star if you succeed! It's my source of motivation!
- No matter what problems or bugs you encounter, you can raise them in issue
Hope I can answer them