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
- Optional: Docker Compose
Running
- Setup the Discord Developer Application and bot
- Create
.env.localand override any variables from.env- At minimum,
DISCORD_TOKENmust be set. See instructions for additional steps.
- At minimum,
- Build the Docker application with
make build - Start the application with
make up
Setting up the Discord Developer Application
Visit the Discord Developer Portal and create a new application. Click here 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=<CLIENT_ID>&permissions=40671259392832&scope=bot%20applications.commands
https://discord.com/oauth2/authorize?client_id=<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.
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 <Track> |
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 <Volume> |
Set the volume of the bot |
Event Commands
| Command | Description |
|---|---|
/schedule |
TODO - Schedule a new event |
/events |
TODO - Display all events |
/event <Event ID> |
TODO - Display a specific event |
/deleteevent <Event ID> |
TODO - Delete a specific event |
/updateevent <Event ID> |
TODO - Update a specific event |
/remindme <Event ID> |
TODO - Set a reminder for a specific event |
Fun Commands
| Command | Description |
|---|---|
/coinflip |
Flip a coin |
/roll <Dice> |
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
Running Locally
- Start the backend containers with
make backend-up - Run the application locally with
make run
The application can also be tested from within a Docker container:
make docker-build
make docker-up

