# Phase 10: Telegram Bot Commands **Status**: Pending **Parent**: [primary-plan.md](primary-plan.md) --- ## Goal Define and implement Telegram bot commands that users can invoke directly from chat to interact with the Immich Watcher system. The server auto-registers commands with Telegram's BotFather API whenever the command config changes. --- ## Proposed Commands ### Informational - `/status` — Show tracker status (active trackers, last event, server health) - `/albums` — List tracked albums with asset counts - `/events [N]` — Show last N events (default 5) ### On-Demand Notifications - `/summary` — Trigger periodic summary now - `/latest [album]` — Show latest assets from an album (or all) - `/memory` — Trigger "On This Day" memory notification now - `/random [album]` — Send random photo(s) from an album ### Asset Browsing - `/search ` — Search assets by filename, people, location - `/favorites [album]` — Show favorite assets - `/people` — List detected people across albums ### Management - `/trackers` — List trackers with enable/disable toggle (inline buttons) - `/targets` — List notification targets - `/help` — Show available commands with descriptions --- ## Tasks ### 1. Command registry model `[ ]` - New entity or config: list of enabled commands per bot - Admin can enable/disable individual commands per bot - Default set of commands enabled on bot registration ### 2. Auto-register commands with Telegram `[ ]` - Call `setMyCommands` API when commands config changes - Call on bot creation and on config update - Store command descriptions in i18n (EN/RU based on bot locale setting) ### 3. Webhook command handler `[ ]` - Extend existing webhook handler to route `/command` messages - Parse command + arguments - Execute corresponding logic (reuse existing services) - Return formatted response ### 4. Implement each command `[ ]` - `/status`, `/albums`, `/events` — read from DB - `/summary`, `/memory`, `/latest`, `/random` — call watcher/notifier services - `/search`, `/favorites`, `/people` — call Immich API via core client - `/trackers`, `/targets` — read from DB, optional inline keyboard for toggle - `/help` — auto-generated from enabled commands ### 5. Frontend: command config per bot `[ ]` - On telegram-bots page, expandable "Commands" section per bot - Checkboxes to enable/disable each command - Bot locale selector (for command descriptions language) - "Sync Commands" button (calls setMyCommands) --- ## Acceptance Criteria - [ ] Commands registered with Telegram and visible in bot menu - [ ] Each command returns a useful response - [ ] Commands auto-sync when config changes - [ ] Admin can enable/disable commands per bot via UI