# 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**.
π 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
[](https://star-history.com/#moeacgx/Telegram-Panel&Date)