# maubot-media Maubot plugin: Matrix bot for the homelab media stack — Seerr, Emby, Sonarr, Radarr, NZBGet, qBittorrent. ## Commands ``` !media help # command list # Search & request (Seerr) !media search # top results across movies + tv !media request # request top hit !media request --tv # force TV match !media request --movie # force movie match !media requests # your pending/processing requests !media trending # what's trending # Library & playback (Emby) !media nowplaying # active sessions !media recent [movies|tv] # recently added (default: both) !media watched # what you recently finished # Downloads (Sonarr/Radarr/NZBGet/qBittorrent) !media queue # combined Sonarr + Radarr queue !media activity # NZBGet + qBt — current downloads !media upcoming # Sonarr calendar, next 7 days !media missing # Sonarr wanted/missing ``` ## How it works The plugin runs in maubot on `im` (Hetzner) and calls each service over Tailscale: | Service | URL | |---------|-----| | Seerr | `http://arr-host:5056` | | Sonarr | `http://arr-host:8989` | | Radarr | `http://arr-host:7878` | | Emby | `http://emby-host:8096/emby` | | NZBGet | `http://download-host:6789` | | qBittorrent | `http://download-host:8082` | Each Matrix sender is mapped to per-service user IDs via plugin config (Seerr user ID, Emby user ID). Senders not in the `user_map` are rejected. ## Build ```bash cd ~/maubot-media zip -rq com.3ddbrewery.media-v0.1.0.mbp maubot.yaml base-config.yaml media_bot/ README.md -x '*/__pycache__/*' ``` Upload via the maubot web UI at https://matrix.example.com/_matrix/maubot, or use the upload curl flow documented in `docs/media-bot.md`. ## Config See `base-config.yaml`. After upload, set real values via the maubot UI's instance config tab.