131 lines
4.2 KiB
Markdown
131 lines
4.2 KiB
Markdown
<div align="center">
|
|
<img src="docs/siren.png" alt="drawing" width="200"/>
|
|
<h1 align="center">Siren</h1>
|
|
</div>
|
|
|
|
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`
|
|
|
|
<h3 id='setup-discord-developer-application'>Setting up the Discord Developer Application</h3>
|
|
|
|
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=<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 |
|
|
| `/requestroll <User> <Dice>` | Request a dice roll from a user |
|
|
|
|
**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
|
|
```
|