Discord bot for custom sound effects and soundboards
Go to file
2023-10-21 17:58:31 +01:00
conf Load environment from file 2023-03-23 19:24:43 +00:00
debian Add loop mode to soundboard 2023-07-09 13:19:18 +01:00
migrations Add additional indexes 2023-10-21 17:58:31 +01:00
scripts Favorite/unfavorite sounds 2023-08-16 16:47:33 +01:00
src Reserve sound names beginning with '@' 2023-10-21 17:50:48 +01:00
systemd Add user when installing 2023-03-29 18:16:04 +01:00
.gitignore Rename a variable. 2023-08-22 17:44:00 +01:00
build.rs Move database migrations to SQLx 2023-03-23 11:38:53 +00:00
Cargo.lock Fix migration. bump ver 2023-08-22 18:55:56 +01:00
Cargo.toml Fix migration. bump ver 2023-08-22 18:55:56 +01:00
Containerfile Add containerised build instructions 2023-04-09 17:35:40 +01:00
LICENSE Create LICENSE 2020-09-21 09:26:55 +00:00
README.md Add containerised build instructions 2023-04-09 17:35:40 +01:00
rustfmt.toml rustfmt. removed gating on creating user rows for join sounds 2021-09-16 22:04:48 +01:00

SoundFX

A bot for managing sound effects in Discord.

Installing

Download a .deb file from the releases and install with sudo apt install ./soundfx_rs-a.b.c_arm64.deb. You will also need a database set up. Install MySQL 8.

Running & config

The bot is installed as a systemd service soundfx-rs. Use systemctl start soundfx-rs and systemctl stop soundfx-rs to respectively start and stop the bot.

Config options are provided in a file /etc/soundfx-rs/default.env

Options:

  • DISCORD_TOKEN- your token (required)
  • DATABASE_URL- your database URL (required)
  • MAX_SOUNDS- specifies how many sounds a user should be allowed without having the PATREON_ROLE specified below
  • PATREON_GUILD- specifies the ID of the guild being used for Patreon benefits
  • PATREON_ROLE- specifies the role being checked for Patreon benefits
  • CACHING_LOCATION- specifies the location in which to cache the audio files (defaults to /tmp/)
  • UPLOAD_MAX_SIZE- specifies the maximum upload size to permit in bytes. Defaults to 2MB

Building from source

When running from source, the config options above can be configured simply as environment variables.

Two options for building are offered. The first is easier.

Build for local platform

  1. Install build dependencies: sudo apt install gcc gcc-multilib cmake ffmpeg libopus-dev pkg-config libssl-dev
  2. Install database server: sudo apt install mysql-server-8.0. Create a database called soundfx
  3. Install Cargo and Rust from https://rustup.rs
  4. Install SQLx CLI: cargo install sqlx-cli
  5. From the source code directory, execute sqlx migrate run
  6. Build with cargo: cargo build --release

Build for other platform

By default, this builds targeting Ubuntu 20.04. Modify the Containerfile if you wish to target a different platform. These instructions are written using podman, but docker should work too.

  1. Install container software: sudo apt install podman.
  2. Install database server: sudo apt install mysql-server-8.0. Create a database called soundfx
  3. Install SQLx CLI: cargo install sqlx-cli
  4. From the source code directory, execute sqlx migrate run
  5. Build container image: podman build -t soundfx .
  6. Build with podman: podman run --rm --network=host -v "$PWD":/mnt -w /mnt -e "DATABASE_URL=mysql://user@localhost/soundfx" soundfx cargo deb