back to the rack

usher

The people watching your library can report a broken file without ever learning what Seerr is.

ver
0.17.3
lic
MIT
src
Python
rel : no release published
repository

usher is a Telegram bot that lets your users report media issues to Seerr, and optionally tells Radarr or Sonarr to delete the bad file and fetch it again. Users sign in with Plex, so every issue is filed in Seerr as the actual reporter rather than under your admin account. Configuration happens in a built-in web admin UI, not a config file.

It runs two things in one container: the bot itself on long polling, so Telegram never needs an inbound URL, and an HTTP server that serves the admin UI and receives Seerr webhooks.

The report path

  1. pick the media The user runs /issue in a DM or any group the bot is in, and searches the library.
  2. narrow it down For television, choose the season and then the episode. Movies skip this step.
  3. classify Video, Audio, Subtitles or Other.
  4. describe One free-text message saying what is actually wrong.
  5. filed as the user The issue is created in Seerr under the reporter's own linked account, using the Plex token they authorised.
  6. followed up Seerr posts back to the webhook, so new comments reach the user in Telegram and either side can resolve the issue.

What it does

plex sign-in
/link runs a Plex OAuth flow, so no username or password is ever typed into Telegram. The resulting token is encrypted at rest.
ticket history
/tickets lists a user's own open issues; the admin sees everyone's. Replies post back to Seerr as comments.
gated auto-fix
Deleting and re-fetching a file is guarded three ways: an allowlist of Telegram user IDs defaulting to the admin alone, a configurable daily limit per user, and an explicit confirmation before anything is destroyed.
web admin
A first-run setup wizard, settings tabs, connection test buttons, and encrypted backup and restore. On first boot it starts in setup-only mode until the required fields exist.
works in groups
DMs or any Telegram group the bot has been added to, with per-user conversation state.

Install

# published image, multi-arch; then read the setup token out of the log
docker run -d \
  -p 8765:8765 \
  -v usher_data:/data \
  cajunflavoredbob/usher:latest
docker logs usher | grep "setup token"

The repository also ships an Unraid template you can add by URL. Either way, open /admin on port 8765, paste the setup token, and the wizard collects the Telegram bot token, your admin Telegram user ID, the Seerr URL and API key, and optionally Radarr and Sonarr for auto-fix. The container restarts into full mode when setup finishes.

One step is easy to miss: in BotFather, set /setprivacy to Disable for your bot, or it will not see /issue in group chats.

Specification

Version 0.17.3, pre-1.0
License MIT
Language Python, python-telegram-bot and aiohttp
Artifact Container image, amd64 and arm64
Requires A Telegram bot token, a Seerr instance, and Plex for sign-in
Optional Radarr and Sonarr, for the auto-fix path only
Listens on Port 8765, admin UI and the Seerr webhook
External calls Telegram, your Seerr instance, plex.tv for sign-in, and Radarr or Sonarr when auto-fix is enabled
Source github.com/cajunflavoredbob/usher