A Better Sonarr/Radarr Request Bot for Discord
Why does this exist
- Uses modern Discord slash commands and components, which provides a clean, performant UI on desktop and mobile
- Simple codebase, <1k lines of code which should make it easy to maintain
- Simple configuration, no need to have a whole web frontend
- Powered by Clojure and Discljord, a markedly good language 😛
Caveats
I wanted a clean app for the sole purpose of requesting movies/TV shows. I personally didn't need Siri integration, support for old API versions, Ombi, etc., so those features are missing here. If you need Ombi support (for managing many people requesting), I suggest you check out Overseerr instead. There is only a boolean permission (role gated) for who has access to the bot, nothing fancy.
If any of these don't suit your fancy, check out Requestrr
Screenshots
FAQ
Will you support Lidarr/Readarr/*arr
Not yet. The idea is that one can work directly with the collection managers or work through a request manager (Overseerr). As Overseerr doesn't support collections managers other than radarr/sonarr and I want feature-parity, those other managers will be left out until Overseerr supports them.
Why are the commands greyed out?
Due to how slash command permissions work in Discord, every user that intends to use the bot must have the assigned role you created. That includes the server owner/admins. Make sure that you assigned the role to yourself and the role ID you copied is correct.
Setup
Java
If you are running without Docker, you need to have at least Java 11 installed, such as adoptium
Discord
- Create a new Application in Discord
- Go to the Bot tab and add a new bot
- Copy out the token
- Go to OAuth2 and under "OAuth2 URL Generator", enable
applications.commandsandbot - Copy the resulting URL and use as the invite link to your server
In the server for which you will use the bot, you need to create a new role for your users. Then, grab that role id.
To do this:
- Enable Developer Mode (User Settings -> Advanced -> Developer Mode)
- Under your server settings, go to Roles, find the role and "Copy ID"
Every user that you wish to have access to the slash commands needs to be assigned this role (even the server owner/admins).
Sonarr/Radarr
- Copy out your API keys from Settings -> General
Overseerr
Sonarr/Radarr and Overseerr are mutually exclusive - you only need to configure one. If you are using Overseerr, your users must have associated discord IDs, or the request will fail.
This bot isn't meant to wrap the entirety of what Overseerr can do, just the necessary bits for requesting with optional 4K and quota support. Just use the web interface to Overseerr if you need more features.
In the config, you replace SONARR_URL, SONARR_API, RADARR_URL,
RADARR_API with OVERSEERR_URL and OVERSEERR_API.
Running with Docker
Simply run with
docker run \
-e SONARR_URL='http://localhost:8989' \
-e RADARR_URL='http://localhost:7878' \
-e SONARR_API='sonarr_api' \
-e RADARR_API='radarr_api' \
-e BOT_TOKEN='bot_token' \
-e ROLE_ID='role_id' \
--name doplarr ghcr.io/kiranshila/doplarr:latest
Building and Running Locally
You need the Clojure CLI tools to build
- Clone directory
clj -T:build uberjar
To skip the build, just download Doplarr.jar and config.edn from the releases
Configuring
- Fill out
config.ednwith the requisite things
Optional Settings
Also, I'm limiting the size of the results in the drop down to 10, this can be
set with :max-results in the config file of MAX_RESULTS as an environment variable.
Setting up on Windows
- Make a folder called Doplarr that contains the jar, the config file, and the
following batch file (something like
run.bat)
@ECHO OFF
start java -jar Doplarr.jar -Dconfig=config.edn
Setting up on Linux (as a systemd service)
- Create the file /etc/systemd/system/doplarr.service with the following
[Unit]
Description=Doplarr Daemon
After=syslog.target network.target
[Service]
User=root
Group=root
Type=simple
WorkingDirectory=/opt/Doplarr
ExecStart=/usr/bin/java -jar target/Doplarr.jar -Dconfig=config.edn
TimeoutStopSec=20
KillMode=process
Restart=always
[Install]
WantedBy=multi-user.target
- Customize the user, group, and working directory to the location of the jar
Then, as root
systemctl -q daemon-reloadsystemctl enable --now -q doplarr
