Telegram mirroring and leeching platform with a container-based runtime, a lightweight web UI, and a configurable transfer pipeline.
Table of Contents Click Here
| Area | Details |
|---|---|
| Runtime | Python Telegram bot + web UI |
| Deployment | Docker & Docker Compose (buildx) |
| Required config | BOT_TOKEN, TELEGRAM_API, TELEGRAM_HASH, OWNER_ID, DATABASE_URL |
| License | LICENSE |
WZML-X is built for users who want a single bot stack that can mirror, leech, manage files, and expose a simple web-based selection flow without stitching together multiple tools. The README focuses on what you need to deploy it quickly, understand the moving parts, and tune the behavior safely.
| Capability | Outcome |
|---|---|
| Mirroring | Send files to Telegram with a controllable pipeline |
| Leeching | Deliver files in the format you prefer, including document and media workflows |
| File selection UI | Review and select torrent / NZB / upload contents before finalizing |
| Multi-source downloads | Use qBittorrent, Aria2, JDownloader, Mega, NZB, and yt-dlp integrations |
| Storage and upload paths | Push content to Google Drive, Rclone, Mega, and other supported routes |
| Automation | Limit tasks, tune queues, and manage startup updates from one config layer |
Deploy with Docker and provide the required configuration values. The container takes care of the runtime path, so users only need to build or start the image and set their settings.
What you need Click Here
- Docker installed
- Your Telegram bot token and Telegram API credentials
- A MongoDB connection string
- The optional service credentials you want to enable, such as Drive, Rclone, Mega, JDownloader, or SABnzbd
VPS / Dedicated Server (Recommended)
git clone https://github.com/SilentDemonSD/WZML-X.git
cd WZML-X
cp config_sample.py config.py
# Edit config.py with your values
docker buildx compose up -dThe bot runs behind a Cloudflare quick tunnel by default. Check the tunnel URL:
docker compose logs tunnelYou'll see a https://*.trycloudflare.com URL — that's your bot's web UI.
To stop:
docker buildx compose downVPS with VPN (Gluetun)
- Uncomment the
gluetunservice indocker-compose.yml - Fill in your VPN provider credentials
- Set
network_mode: "service:gluetun"on theappservice - Start:
docker buildx compose up -dAll traffic (including the cloudflared tunnel) routes through the VPN.
Multi-Instance (Multiple Bots)
Each bot needs its own config.py and data volumes. Example for a second bot:
- Create
config2.pywith differentBOT_TOKEN,OWNER_ID, etc. - Uncomment
app2andtunnel2indocker-compose.yml - Edit volume mounts to use
config2.pyand separate data dirs - Start:
docker buildx compose up -dEach bot gets its own cloudflared tunnel URL. Admin ports (qBittorrent, SABnzbd) are mapped to different host ports (127.0.0.1:8091, etc.).
Single Container (Manual)
git clone https://github.com/SilentDemonSD/WZML-X.git
cd WZML-X
docker build -t wzmlx .
docker run -p 8080:8080 wzmlxDeployment Notes
- If you use qBittorrent, tune
AsyncIOThreadsCountto your machine size. - Stop the container before removing it, and remove the container before pruning images.
- Useful cleanup commands:
docker container prune
docker image prune -aLegacy Workflow Guide
Some users still rely on the external workflow path referenced by the previous README:
Keep this only if that workflow still matches your deployment style.
Start with the required values:
BOT_TOKENTELEGRAM_APITELEGRAM_HASHOWNER_IDDATABASE_URL
Then tune the optional behavior from config_sample.py.
Important user-facing settings
| Setting | User impact |
|---|---|
DEFAULT_LANG |
Bot language |
STATUS_LIMIT |
How much status data is shown |
DEFAULT_UPLOAD |
Default upload target |
LEECH_SPLIT_SIZE |
How large leech outputs are split |
QUEUE_ALL, QUEUE_DOWNLOAD, QUEUE_UPLOAD |
Queue pressure and concurrency |
SHOW_CLOUD_LINK |
Whether cloud links are shown to users |
WEB_PINCODE |
Protects web access to file selection |
Integrations available in config
The sample config also covers:
- qBittorrent and Aria2-related controls
- JDownloader login details
- Mega credentials
- SABnzbd server definitions
- Google Drive settings
- RSS, search, media metadata, and logging controls
| Path | Purpose |
|---|---|
bot/ |
Bot core, handlers, listeners, and modules |
web/ |
FastAPI app, templates, and the file selector UI |
gen_scripts/ |
Setup helpers for sessions, tokens, and drive configuration |
plugins/ |
Optional bot plugins |
qBittorrent/ |
Default qBittorrent configuration |
sabnzbd/ |
Default SABnzbd configuration |
Note
This documentation is still being expanded.
- Full guides:
docs/ - Deployment notes: the docs site linked from the repository at WZ Docs
- Configuration reference:
config_sample.py
Join Community
- Telegram channel: https://t.me/WZML_X
- Support group: https://t.me/WZML_Support
WZML-X is a fork of mirror-leech-telegram-bot. The base project belongs to anasty17 and upstream contributors.
Bot Authors
| Avatar | Name | Role | Profile |
|---|---|---|---|
| SilentDemonSD | Author, UI design, and custom features | GitHub | |
| RjRiajul | Co-author and maintainer | GitHub | |
| CodeWithWeeb | Feature expansion and wrap-up improvements | GitHub | |
| Maverick | Co-author and bug testing | GitHub |
This project is distributed under the terms of the repository license. See LICENSE for the full text.
