Back to Projects
Anchorr Hero

Anchorr

Discord Bot for Media Requests and Notifications

Active

Overview

Anchorr is a powerful Discord bot designed to streamline media management for self-hosted media server users. It enables seamless media requests through Jellyseerr and delivers real-time notifications when new content lands in your Jellyfin library.

The bot integrates with TMDB and OMDb APIs to provide rich media information, including posters, ratings, synopses, and IMDb links. Users can search for movies and TV shows with autocomplete support, make requests with a single click, and receive personalized notifications when their requested content becomes available.

Anchorr also features a web dashboard for easy configuration, Docker deployment support, and comprehensive permission management through Discord role-based allowlist and blocklist systems.

Technologies

Node.js Express.js Discord.js v14 TMDB API OMDb API Jellyseerr API Jellyfin API WebSocket JWT Auth Docker Winston Logger

Key Features

Media search with autocomplete via
/search command
Trending content browsing with
/trending command
One-click media requests with duplicate detection
Real-time Jellyfin notifications via WebSocket
Web dashboard for easy configuration
Role-based permissions with allowlist/blocklist
Docker & Docker Compose deployment ready
Private PM notifications when content is ready

Approach & Architecture

The architecture follows a modular design pattern with separate concerns for API integrations, Discord command handling, and real-time notifications. The core application (app.js) orchestrates Express routes, Discord slash commands, and manages the WebSocket connection to Jellyfin for live updates.

External APIs are abstracted into dedicated modules (tmdb.js, jellyseerr.js, jellyfin.js, omdb.js) with built-in caching using node-cache to minimize API calls and improve response times. The bot implements rate limiting to respect Discord's API limits and provides comprehensive logging with Winston for debugging and monitoring.

For user experience, I focused on rich Discord embeds with movie posters, ratings, and interactive buttons for seamless request flows. The ephemeral mode option ensures responses are only visible to the command user, keeping channels clean while still providing all necessary information.

Screenshots

Links