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
-
pick the media
The user runs
/issuein a DM or any group the bot is in, and searches the library. - narrow it down For television, choose the season and then the episode. Movies skip this step.
- classify Video, Audio, Subtitles or Other.
- describe One free-text message saying what is actually wrong.
- filed as the user The issue is created in Seerr under the reporter's own linked account, using the Plex token they authorised.
- 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
/linkruns a Plex OAuth flow, so no username or password is ever typed into Telegram. The resulting token is encrypted at rest.- ticket history
/ticketslists 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 |