VaultRequestrr

VaultRequestrr

Docker app from vancityactivist's Repository

Overview

A Discord bot that requests movies and TV shows through Seerr (the Overseerr/Jellyseerr successor). The first time a user requests something, the bot asks for their Plex username/email and links their Discord account to their Seerr user, so every request is attributed to them and their per-user quotas/limits are respected. The link is stored locally (SQLite) and written back into Seerr notification settings. Features: /movie and /tv search with availability indicators and season selection; /quota shows remaining limits and reset time; DM notifications when a request becomes available or is declined; and an optional password-protected admin dashboard (set a Dashboard Password to enable it on port 5056) for managing links, viewing activity, and toggling settings.

VaultRequestrr

CI Docker License: MIT Python 3.12 GHCR Buy Me a Coffee

A Discord bot for requesting movies and TV shows through Seerr (the unified successor to Overseerr/Jellyseerr), with self-service Plex account linking so that each user's requests are attributed to their Seerr account and their per-user quotas/limits are respected.

📖 Full documentation lives on the wiki — setup guides, the full configuration reference, feature deep-dives, and troubleshooting.

Why this exists

Tools like requestrr attribute a request to the right Seerr user by matching a Discord ID that an admin has to hand-enter into each Seerr user's notification settings. After the Overseerr → Seerr migration those IDs are typically empty, so every request falls through to a single default user (or fails) and per-user quotas stop working.

VaultRequestrr fixes this without any admin busywork: the first time a user requests something, the bot asks for their Plex username/email, resolves it to a Seerr user, remembers the link, and from then on submits every request as that user.

Features

  • Per-user attribution — quotas and permissions come from each user's own Seerr account (Account Linking)
  • Requests with availability at a glance — ✅ / 🟡 / ⏳ / 🕒 badges on search results and the season picker (Requests and Approvals)
  • Approval workflow — pending requests DM the admins with persistent Approve/Decline buttons, plus /pending and a dashboard queue
  • Issue reporting with automated re-grab — users report bad video/audio/subtitles; one button blocklists the bad release, grabs a replacement, and watches it through import (Issue Reporting and Re-grab)
  • DM notifications — on availability, decline, and issue resolution — even for requests made in the Seerr web UI (Notifications)
  • Plex invites — linked users can invite friends, with per-user caps (Plex Invites)
  • Anime routing — /anime targets dedicated anime Sonarr/Radarr instances (Anime Requests)
  • Admin dashboard — health, links, activity, approvals, issues, invites, live logs, and live-editable settings (Admin Dashboard)

Commands

Command Description
/movie <title> Search for and request a movie
/tv <title> Search for and request a TV show (with season selection)
/anime <title> Search anime and route it to the anime library (when configured)
/issue <title> Report a Video/Audio/Subtitle/Other problem with media on the server
/invite Invite a friend to Plex by email (linked users; admin-enabled)
/quota Show your remaining request quota and when it resets
/myrequests List your recent requests and their current status
/pending (Admin) Review, approve, and decline requests awaiting approval
/linkstatus Show which Seerr account you're linked to
/unlink Remove your link (you'll be asked again on the next request)

Quick start

  1. Create a Discord bot at https://discord.com/developers/applications, copy the bot token, and invite it with the applications.commands and bot scopes (no privileged intents needed).
  2. Grab a Seerr admin API key (Seerr → Settings → General → API Key).
  3. Configure and run:
cp .env.example .env
# edit .env: DISCORD_TOKEN, SEERR_URL, SEERR_API_KEY
# set DISCORD_GUILD_ID for instant slash-command registration
docker compose up -d --build

Or run the published image directly:

docker run -d --name vaultrequestrr --restart unless-stopped \
  -e DISCORD_TOKEN=... \
  -e SEERR_URL=http://10.10.0.10:5055 \
  -e SEERR_API_KEY=... \
  -e DISCORD_GUILD_ID=... \
  -v /path/to/data:/data \
  ghcr.io/vancityactivist/vaultrequestrr:latest

Set WEB_PASSWORD (and publish port 5056) to enable the admin dashboard.

More options — bare Python and a ready-made Unraid template — are on the Installation page, and every environment variable is documented in the Configuration reference.

Development

pip install -r requirements.txt pytest
pytest

See Development for the project layout and CI/release notes.

Related apps

Details

Repository
ghcr.io/vancityactivist/vaultrequestrr:latest
Last Updated2026-10-08
First Seen2026-06-16

Runtime arguments

Web UI
http://[IP]:[PORT:5056]/
Network
bridge
Shell
sh
Privileged
false

Template configuration

Data DirectoryPathrw

Stores the SQLite database of Discord↔Seerr account links. Keep this on persistent storage.

Target
/data
Default
/mnt/user/appdata/vaultrequestrr
Value
/mnt/user/appdata/vaultrequestrr
Discord Bot TokenVariable

Bot token from https://discord.com/developers/applications (Bot tab).

Target
DISCORD_TOKEN
Seerr URLVariable

Base URL of your Seerr instance, including port. Use your LAN address, e.g. http://10.10.0.10:5055

Target
SEERR_URL
Default
http://192.168.1.10:5055
Value
http://192.168.1.10:5055
Seerr API KeyVariable

Seerr API key (Settings → General → API Key). Must belong to an admin user.

Target
SEERR_API_KEY
Discord Guild IDVariable

Optional: your Discord server ID. Set it so slash commands register instantly (otherwise global registration can take up to ~1 hour). Enable Developer Mode in Discord, right-click the server icon → Copy Server ID.

Target
DISCORD_GUILD_ID
Require LinkingVariable

Require users to link a Plex account before their first request (recommended: true).

Target
REQUIRE_LINKING
Default
true
Value
true
Default Seerr User IDVariable

Optional fallback Seerr user id used only when Require Linking is false.

Target
DEFAULT_SEERR_USER_ID
Log LevelVariable

DEBUG, INFO, WARNING, or ERROR.

Target
LOG_LEVEL
Default
INFO
Value
INFO
Dashboard PasswordVariable

Set a password to enable the admin web dashboard (view/manage links, activity, settings). Leave blank to disable the dashboard.

Target
WEB_PASSWORD
Dashboard PortPorttcp

Host port for the admin dashboard. Only used when a Dashboard Password is set.

Target
5056
Default
5056
Value
5056
Notify When AvailableVariable

DM the requester when their movie/season becomes available.

Target
NOTIFY_ON_AVAILABLE
Default
true
Value
true
Notify When DeclinedVariable

DM the requester when an admin declines their request.

Target
NOTIFY_ON_DECLINED
Default
true
Value
true
Notify When Issue ResolvedVariable

DM the reporter when their reported issue is marked resolved.

Target
NOTIFY_ON_ISSUE_RESOLVED
Default
true
Value
true
Poll Interval (seconds)Variable

How often to poll Seerr for request status changes (0 disables notifications).

Target
POLL_INTERVAL_SECONDS
Default
120
Value
120