A elegantly enhanced Telegram Bot which can download torrents, mega, google drive links, telegram file, direct links and all yt-dlp sites, upload to google driv
A elegantly enhanced Telegram Bot which can download torrents, mega, google drive links, telegram file, direct links and all yt-dlp sites, upload to google driv
Telegram mirroring and leeching platform with a container-based runtime, a lightweight web UI, and a configurable transfer pipeline.
| 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 Heregit 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 tunnel You'll see a https://*.trycloudflare.com URL — that's your bot's web UI.
To stop:
docker buildx compose downgluetun service in docker-compose.ymlnetwork_mode: "service:gluetun" on the app servicedocker 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:
config2.py with different BOT_TOKEN, OWNER_ID, etc.app2 and tunnel2 in docker-compose.ymlconfig2.py and separate data dirsdocker buildx compose up -d Each bot gets its own cloudflared tunnel URL. Admin ports (qBittorrent, SABnzbd) are mapped to different host ports (127.0.0.1:8091, etc.).
git clone https://github.com/SilentDemonSD/WZML-X.git
cd WZML-X
docker build -t wzmlx .
docker run -p 8080:8080 wzmlxAsyncIOThreadsCount to your machine size.docker container prune
docker image prune -aSome 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_URLThen tune the optional behavior from config_sample.py.
| 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 |
The sample config also covers:
-ad) Set ALLDEBRID_API_KEY (default: empty, feature off) in config_sample.py,
in the environment, or from Bot Settings → Config Variables → ALLDEBRID_API_KEY.
Add -ad to a mirror/leech command to route the input through AllDebrid:
/mirror <filehost link> -ad unlocks premium hosts (1fichier, rapidgator,
mega, ...) and hands the direct link to the normal downloader./leech <magnet> -ad (or reply to a .torrent with -ad) uploads the
torrent to AllDebrid, waits for it to finish there, then downloads every
file from AllDebrid's CDN — aria2/qBittorrent are bypassed entirely. ALLDEBRID_NO_SEED_TIMEOUT (default: 180) caps how many seconds a magnet may
stall with no seeders and no download progress before the task is aborted.
Set it to 0 to disable the check and rely on AllDebrid's own dead-torrent
reporting instead.
The flag is documented in the mirror help menu under the AllDebrid button.
Without a key the task fails with ALLDEBRID_API_KEY is not configured;
without -ad nothing changes. Magnets stop after 3 min with no seeders and
2 h overall, and are removed from your AllDebrid history if the task fails.
| 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.
docs/config_sample.pyWZML-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.
No open issues yet, or sync has not completed.