drawing

Siren

Siren is a D&D Bot built for Discord, written in Rust. Features include: - Music commands from Youtube and locally hosted files - Database for D&D 5e content - Session scheduling - Backend API - ChatGPT integration ## Requirements - [Docker](https://www.docker.com/) - **Optional**: [Docker Compose](https://docs.docker.com/compose/install/) ## Running 1. Setup the Discord Developer Application and bot 2. Create `.env.local` and override any variables from `.env` - At minimum, `DISCORD_TOKEN` must be set. See [instructions](#setup-discord-developer-application) for additional steps. 3. Build the Docker application with `make build` 4. Start the application with `make up`

Setting up the Discord Developer Application

Visit the [Discord Developer Portal](https://discord.com/developers/applications) and create a new application. Click [here](https://discord.com/developers/docs/intro) for guides and more information. #### Oauth2 **Required Scopes**: - bot - applications.commands **Required Bot Permissions**: - General Permissions - Manage Roles - Change Nickname - View Channels - Manage Events - Create Events - Text Permissions - Send Messages - Create Public Threads - Create Private Threads - Send Messages in Threads - Manage Messages - Manage Threads - Embed Links - Attach Files - Read Message History - Mention Everyone - Use External Emojis - Use External Stickers - Add Reactions - Create Polls - Voice Permissions - Connect - Speak Example Invites: ``` https://discord.com/api/oauth2/authorize?client_id=&permissions=40671259392832&scope=bot%20applications.commands ``` ``` https://discord.com/oauth2/authorize?client_id=&permissions=581083641408576&integration_type=0&scope=bot+applications.commands ``` The CLIENT_ID can be found in the General Information tab on the Discord Developer Portal for your application, under `Application ID` The DISCORD_TOKEN (used in the `.env file`) can be found under the Bot tab on the Discord Developer Portal for your application. ![DISCORD_TOKEN Example](docs/discord_token_example.png) ### Commands Siren utilizes Discord slash commands. To view the commands, run `/help` in a server where the bot is installed. The following commands are available: **Music Commands** | Command | Description | | --- | --- | | `/play ` | Play a track from Youtube or locally hosted files | | `/pause` | Pause the current track | | `/resume` | Resume the current track | | `/skip` | Skip the current track | | `/stop` | Stop the current track | | `/mute` | Mute the current track | | `/queue` | ***TODO*** - Display the current queue | | `/clear` | ***TODO*** - Clear the current queue | | `/shuffle` | ***TODO*** - Shuffle the current queue | | `/loop` | ***TODO*** - Loop or unloop the current track | | `/nowplaying` | ***TODO*** - Display the current track | | `/volume ` | Set the volume of the bot | **Event Commands** | Command | Description | | --- | --- | | `/schedule` | ***TODO*** - Schedule a new event | | `/events` | ***TODO*** - Display all events | | `/event ` | ***TODO*** - Display a specific event | | `/deleteevent ` | ***TODO*** - Delete a specific event | | `/updateevent ` | ***TODO*** - Update a specific event | | `/remindme ` | ***TODO*** - Set a reminder for a specific event | **Fun Commands** | Command | Description | | --- | --- | | `/coinflip` | Flip a coin | | `/roll ` | Roll a dice | **Utility Commands** | Command | Description | | --- | --- | | `/ping` | Display the bot's latency | | `/poll` | ***TODO*** - Create a poll | | `/help` | ***TODO*** - Display a list of commands | ## Contributing - [Rust](https://www.rust-lang.org/) - [yt-dlp](https://github.com/yt-dlp/yt-dlp) - [ffmpeg](https://github.com/yt-dlp/FFmpeg-Builds) ### Running Locally 1. Start the backend containers with `make backend-up` 2. Run the application locally with `make run` The application can also be tested from within a Docker container: ``` make docker-build make docker-up ```