# umi

a self-hostable single-guild discord bot for playing music and announcing vc channel joins/leaves

## Pre-requisites

Install dependencies:

- FFI: `libffi`
- NaCl: `libnacl` or `libsodium`
- FFmpeg: `ffmpeg`
- yt-dlp: `yt-dlp`
- opus: `opus`

Copy `.env.example` to `.env`:

- `DISCORD_BOT_TOKEN` is obtained from the [Discord Developer Dashboard](https://discord.com/developers/applications)
  - Click or create an application
  - Get your token from the "Bot" section in the sidebar menu

- `DISCORD_GUILD_ID` is obtained from within the Discord app
  - Settings > Advanced > Developer Mode: enabled
  - Right click the guild and select "Copy ID"

- `DISCORD_BOT_ADMIN_ROLE_ID` for reloading cogs
- `DISCORD_BOT_ADMIN_USER_ID` for reloading cogs
- `DISCORD_VCJOIN_CHANNEL` for the VCJoin cog

## Setup

### ...with PDM

```sh
pdm install --prod
pdm run python app.py
```

### ...with requirements.txt and virtualenv

```sh
virtualenv .venv
source .venv/bin/activate
pip install -r requirements.txt
python app.py
```

### ...with Docker Compose

```sh
docker compose build
docker compose up -d
```

## Log into YouTube

- Follow the instructions at https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies
- Put your extracted cookies into config/cookies.txt