# Telegram Panel [English](README.md) | [δΈ­ζ–‡](README.zh-CN.md) A multi-account Telegram management panel built on **WTelegramClient**, powered by **.NET 8** and **Blazor Server**.

.NET 8.0 Blazor Server Docker Compose Powered by WTelegramClient

πŸ“š Documentation | πŸͺ API Account Marketplace | πŸ–ΌοΈ Screenshots | πŸ’¬ Telegram Channel | πŸ‘₯ Community Group

## Overview Telegram Panel is designed for operating and managing multiple Telegram accounts from a single web interface. It focuses on account lifecycle management, batch operations, channel/group administration, automation workflows, and extensibility. ## Feature Highlights - πŸ“₯ **Multi-account import and login**: import/export Telethon and TData archives, sign in with SMS verification codes, and handle 2FA passwords - πŸ‘₯ **Batch operations for account fleets**: bulk join / subscribe / leave / start bots, auto-send messages in private groups for account warming, bulk invite members or bots, batch assign administrators, export links, and more - πŸ“± **Kick other devices with one click**: keep the current panel session while removing other active sessions - 🧹 **Invalid account detection and cleanup**: batch-handle banned, limited, frozen, logged-out, or expired-session accounts - πŸ” **2FA management**: change secondary passwords individually or in bulk, and bind / replace recovery email addresses (including support for Cloud Mail verification flows) - πŸ‘€ **Better account visibility**: quickly inspect joined channels and groups from the account list, and display estimated registration time based on the 777000 system notification history - 🧩 **Modular architecture**: install extensions for tasks, APIs, and UI modules (see `docs/developer/modules.md`) ## Recent Additions - 🧠 **AI verification support**: long-running activity tasks can detect verification prompts and automatically click buttons or answer with text - βš™οΈ **Expanded AI configuration**: OpenAI-compatible endpoints, API key management, default / preset models, and one-click connectivity testing - πŸ” **Improved AI reliability**: configurable retry counts with shared logic for AI decisions, answers, and connectivity tests - πŸ“š **Data dictionary support**: text dictionaries, image dictionaries, and template variables - πŸ•’ **Scheduled task capability**: timed channel and group tasks such as creation and publishing - 🧠 **Task center upgrades**: pause, edit, and rerun continuous tasks; separate running tasks from history; support auto-cleanup - πŸ’¬ **Continuous activity improvements**: account categories, randomized copywriting, second-level send intervals, and persistent run configuration - πŸ”„ **Sync experience optimization**: manual β€œsync now” runs in the background and can be tracked in the task center - πŸ‘€ **Account list enhancement**: estimated registration time display and joined channel/group inspection - πŸ“Ί **Channel management upgrade**: channel lists now focus on joined channels, with multi-condition filters and linked-account visibility - πŸ‘₯ **Group management completion**: group creation, categorization, batch operations, and listing support - πŸ”— **Multi-account relationship visibility**: channels and groups can bind multiple system accounts, with linkage visible in list and detail views - πŸšͺ **Real exit / dissolve actions**: channels and groups support single and batch leave / dissolve operations - 🧹 **Data accuracy fixes**: improved channel-group separation and better presentation after relationship sync - ♻️ **Post-sync cleanup**: automatically remove invalid relations and orphaned records after synchronization - ⚑ **Data-layer optimization**: extra query and relation indexes for better filtering performance with large account / channel / group datasets ## Roadmap - [x] One-click leave / unsubscribe / subscribe for channels and groups - [x] Batch auto check-in - [ ] One-click clear contacts - [ ] Batch re-login with SMS verification codes (for refreshing sessions) - [ ] Phone registration flow for unregistered numbers (name / optional email / email code, etc.) - [ ] Generic SMS receiving API abstraction: the core app depends only on the abstraction, while providers integrate through adapter modules without changing the main codebase - [ ] Support phone number replacement - [ ] Multiple proxies: bind proxies by account category - [ ] Multiple APIs: bind ApiId / ApiHash by account category - [ ] Scheduled channel creation and scheduled public publishing - [ ] Scheduled fan growth: integrate third-party fan-growth APIs through a generic adapter structure and provider modules - [x] Scheduled speaking / warming for group chats ## Quick Start ### One-click Docker deployment (recommended) Requirements: Docker. On Windows, Docker Desktop + WSL2 is recommended. On Linux, install Docker Engine directly. #### 1. Prepare the project ```bash git clone https://github.com/moeacgx/Telegram-Panel cd Telegram-Panel cp .env.example .env ``` #### 2. Choose an image tag By default, the stable image is used and no change is required: ```bash TP_IMAGE=ghcr.io/moeacgx/telegram-panel:latest ``` If you want the development image, update `.env` to: ```bash TP_IMAGE=ghcr.io/moeacgx/telegram-panel:dev-latest ``` #### 3. Start the service ```bash docker compose pull docker compose up -d ``` Open: `http://localhost:5000` #### Default admin account (first login) Username: `admin` Password: `admin123` After signing in, change it on the password update page. #### Common commands ```bash # View logs docker compose logs -f # Update to the image tag specified in the current .env docker compose pull docker compose up -d # Restart / stop docker compose restart docker compose down ``` ### Run locally for development (optional) > Suitable for development or local debugging. Requires the .NET 8 SDK. ```bash dotnet run --project src/TelegramPanel.Web ``` Open: `http://localhost:5000` ## In-app Docker Update The panel supports one-click self-update when deployed with Docker (top-left version number β†’ version information dialog): 1. Click **Check for updates** to read the latest GitHub Release. 2. Click **Update and restart** to automatically download the matching Linux package to `/data/app-current`. 3. After restart is triggered, the container will prioritize launching from `/data/app-current`, so manual `docker compose pull` is not required. Notes: - This feature currently works only when running inside a Docker container. - The updater depends on assets generated by the `release.yml` workflow. If a Release does not include `linux-x64` / `linux-arm64` zip assets, one-click update will be unavailable. ## Screenshots More screenshots: `screenshot/` | | | | |---|---|---| | | | | ## ⭐ Star History [![Star History Chart](https://api.star-history.com/svg?repos=moeacgx/Telegram-Panel&type=Date)](https://star-history.com/#moeacgx/Telegram-Panel&Date)