Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/scotow/disrecord
A Discord bot to record and create soundboards
https://github.com/scotow/disrecord
discord discord-bot discord-soundboard discord-soundboard-bot serenity songbird soundboard
Last synced: 10 days ago
JSON representation
A Discord bot to record and create soundboards
- Host: GitHub
- URL: https://github.com/scotow/disrecord
- Owner: scotow
- License: mit
- Created: 2023-04-19T22:46:14.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-05-22T23:38:04.000Z (6 months ago)
- Last Synced: 2024-05-23T00:35:54.857Z (6 months ago)
- Topics: discord, discord-bot, discord-soundboard, discord-soundboard-bot, serenity, songbird, soundboard
- Language: Rust
- Homepage:
- Size: 790 KB
- Stars: 3
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Release](https://img.shields.io/github/v/tag/scotow/disrecord?label=version)](https://github.com/scotow/disrecord/tags)
[![Build Status](https://img.shields.io/github/actions/workflow/status/scotow/disrecord/docker.yml)](https://github.com/scotow/disrecord/actions)![Banner](banner.png)
## Features
### Recorder:
- Record users' voice in Discord channels
- Whitelist
- WAV download
- Customizable buffer duration
- Ring buffer
- Chunked recordings### Soundboard:
- Create soundboard dashboard
- Supports groups, emojis, button color
- Optional transcoding
- Download sounds
- Backups as ZIP
- Basic usage logs
- HTTP play sound endpoint![Soundboard](soundboard.png)
### HTTP endpoints
Some actions can also be trigger using HTTP calls to allow scripting:
```
# Join a voice channel:
/guilds/:guild/channels/:channel/join# Join the same voice channel of a user:
/guilds/:guild/users/:user/follow# Play a specific sound:
/guilds/:guild/sounds/:sound/play# Play a random sound among a list:
/guilds/:guild/sounds/:sound|:sound.../play# Play a random sound from the soundboard:
/guilds/:guild/sounds/random/play# Play the latest added sound to the soundboard:
/guilds/:guild/sounds/latest/play# Play the last played sound (using buttons) from the soundboard:
/guilds/:guild/sounds/last-played/play# Play the nth last played sound (using buttons) from the soundboard:
/guilds/:guild/sounds/last-played/:offset/play
```## Configuration
### Options
```
Usage: disrecord [OPTIONS] --discord-tokenOptions:
-v, --verbose...
-t, --discord-token
-w, --record-whitelist-path [default: record-whitelist]
-d, --voice-buffer-duration [default: 3m]
-e, --voice-buffer-expiration [default: 5m]
-s, --soundboard-metadata-path [default: soundboard]
-S, --sounds-dir-path [default: .]
-D, --sound-max-duration [default: 15s]
-c, --sound-cache-duration [default: 3m]
-f, --ffmpeg-path [default: ffmpeg]
-r, --disable-delete
-g, --allow-grey
-a, --soundboard-http-address [default: 127.0.0.1]
-p, --soundboard-http-port [default: 8080]
-h, --help Print help
-V, --version Print version
```### Running locally
```sh
cargo run -- [OPTIONS]
```#### Dependencies:
- Opus ([`songbird`'s README](https://github.com/serenity-rs/songbird#dependencies))
- [`ffmpeg`](https://ffmpeg.org/download.html) command to transcode audio files on the fly (optional)### Docker
If you prefer to run Disrecord as a Docker container, you can either build the image yourself using the Dockerfile available in this repo, or you can use the [image](https://github.com/scotow/disrecord/pkgs/container/disrecord%2Fdisrecord) built by the GitHub action.
```
docker run -v disrecord:/data ghcr.io/scotow/disrecord/disrecord:latest -t DISCORD_TOKEN -w /data/record-whitelist -s /data/soundboard -S /data
```### Binding to all interfaces
By default, Disrecord will only listen on the loopback interface, aka. `127.0.0.1`. If you don't want to host Disrecord behind a reverse proxy or if you are using the Docker image, you should specify the `0.0.0.0` address by using the `-a | --soundboard-http-address` option.