Files
ShiteMusicBot/README.md
T

114 lines
3.3 KiB
Markdown

# Shite Music Bot
A discord music bot you can host yourself!
## Features
- Round Robin style queue, you won't have to wait forever for your songs to play.
- Interactive menus
- Translations, get the bot in your preferred language! Works for both commands and replies.
- Noice per server customization options, including per server localization.
- Toit embeds.
- DJ roles. Grants members in the role some more control over the queue.
- Sound-manipulation features, bass boost and nightcore.
- Lyrics command that sometimes gives the correct lyrics
### Fair queue behavior
Each user has their own queue and the bot mixes them together for fair time sharing.
![Round robin queue](.github/assets/mixqueue.gif)
### Interactive menus
![a](.github/assets/queue.png)
![b](.github/assets/search.png)
## Requirements
- Python 3.10 or greater
- A [lavalink](https://github.com/Freyacodes/Lavalink) server
## Setup
1. Change or copy data/config.yaml.example to config.yaml
- If using docker, the config file will be moved into `/data` on the first run.
2. Configure Lavalink
- When self-hosting:
- Get a `application.yml` file from your lavalink distribution, to provide lavalink.
- Secure the instance by changing the password.
- This bot is written with the Youtube, Soundcloud, Bandcamp and Vimeo source in mind. Others might work
- Self-hosted and hosted:
- Configure the bot to connect to your nodes.
- If you wish to pre-seed the bot with lavalink nodes, you can do so in `data/config.yml`
```yml
lavalink nodes:
- host: localhost
port: 2333
password: youshallnotpass
region: eu
name: main
```
3. Add your bot token to `config.yaml`.
4. Prepare your environment:
- Native install:
- Clone, and enter the repository.
- `git clone https://github.com/r-Norge/ShiteMusicBot.git && cd ShiteMusicBot`
- (Recommended) Create a virtual environment and activate it.
- `python3 -m pip venv .venv && . .venv/bin/activate`
- Install requirements `python3 -m pip install -r requirements.txt`
- Docker Compose:
- Copy the example that fits your needs
- Change the volume path(s) to store persistent data on your host.
- `docker compose pull`
5. Run the bot:
- Native install:
- `python3 bot.py`
- Docker Compose:
- `docker compose run -d`
6. Make sure the bot responds, by invoking the info command. `@ShiteMusicBot info`, substitute `ShiteMusicBot` with the name of your bot.
### Docker Compose Example
#### Self-hosted lavalink
```yaml
version: '3'
networks:
internal:
driver: bridge
services:
lavalink:
hostname: lavalink
image: fredboat/lavalink:dev
networks:
- internal
volumes:
- ./application.yml:/opt/Lavalink/application.yml
bot:
container_name: ShiteMusicBot
image: rnorge/music
networks:
- internal
command: python3 bot.py
volumes:
- ./data:/app/data
```
#### Hosted lavalink
```yaml
version: '3'
services:
bot:
container_name: ShiteMusicBot
image: rnorge/music
command: python3 bot.py
volumes:
- ./data:/app/data
```