A Mutli Functional Telegram bot to download from anywhere — torrents, Mega, YouTube, Google Drive, rclone, etc — and upload to Telegram, Cloud Drives, DDLs, or any rclone remote. Built-in FFmpeg processing, archive handling, torrent search, RSS monitoring, and web UI for file selection. Based on WZML-X
Channel · Support Group · Issues · Docker Hub
🚧 Status: NEO-WZML is active and evolving. Public releases are expected to be usable, but if you hit a bug, please open an issue with logs and the command you ran.
- ✨ Why NEO-WZML
- 🚀 Highlights
- ⚡ Quick Start
- 💬 Commands
- 🧭 Deployment Notes
- 🆚 What NEO-WZML Adds
- 🔍 Troubleshooting
- 🤝 Support
- 💰 Sponsors and Donations
- 🙏 Credits
- 📄 License
NEO-WZML is built for people who move a lot of files through Telegram and cloud storage. It combines the classic mirror/leech workflow with modern file selection, persistent user settings, strong queue controls, and practical media tools.
- 🔌 One bot, many sources: direct links, torrents, Mega, Google Drive, JDownloader, yt-dlp, Telegram messages, and rclone remotes.
- 🎯 Multiple upload targets: Telegram leech, Google Drive, rclone remotes, GoFile, BuzzHeavier, and PixelDrain.
- 🌐 Web file selection: pick torrent files and Mega folder files before downloading.
- 🎬 Media-ready: split, convert, merge videos, sample videos, screenshots, metadata, thumbnails, and custom FFmpeg pipelines.
- 🗜️ Archive workflow: extract, password-protected ZIPs, image-only ZIPs, split archive handling, and 7z-backed progress.
- 🛡️ Operational controls: MongoDB persistence, queues, per-user limits, cooldowns, verification, auth gates, and safe group behavior.
- 🐳 Docker-first deployment: Compose setup with optional Gluetun scaffolding for VPN-routed torrent traffic.
| Engine | Sources | Strength |
|---|---|---|
| Aria2c | Direct links, magnets, torrents | Fast generic downloads |
| qBittorrent | Magnets and .torrent files |
Search, selection, seeding |
| MegaSDK | Mega file and folder links | Native Mega downloads and folder selection |
| Google Drive | Files and folders | OAuth, service accounts, Team Drives |
| yt-dlp | YouTube and supported sites | Formats, playlists, audio extraction |
| Telegram | Messages and chat files | Large Telegram file handling |
| rclone | Any configured remote | Cloud download and cloud transfer |
| JDownloader | Premium hosts and containers | Host capture and CAPTCHA-aware flows |
| Target | Notes |
|---|---|
| Telegram | Leech as media or document, with captions, thumbnails, dump chats, and splitting |
| Google Drive | OAuth, service accounts, Team Drives, duplicate checks, and index links |
| rclone | Upload to any configured remote, including user configs via mrcc: |
| DDL hosts | Upload to GoFile, BuzzHeavier, PixelDrain, or multiple hosts |
| Feature | What it does |
|---|---|
-z / -e |
Compress or extract before upload |
-zim |
ZIP only images into Images.zip, keeping videos/files normal |
-mv |
Merge folder videos into one .mkv with FFmpeg concat |
-ff |
Run configured FFmpeg command presets |
-ss / -sv |
Generate screenshots or sample videos |
| Metadata tools | Apply title, audio, video, and subtitle metadata |
| Filename rules | Prefixes, suffixes, regex swaps, and cleanup rules |
git clone https://github.com/irisXDR/NEO-WZML.git
cd NEO-WZML
cp sample_config.py config.py
# Edit config.py and set the required values listed below.
docker compose up -d --build
docker compose logs -fStop the stack:
docker compose downCreate config.py from sample_config.py and set these first:
| Variable | Purpose |
|---|---|
BOT_TOKEN |
Telegram bot token from BotFather |
OWNER_ID |
Telegram numeric user id of the owner |
TELEGRAM_API |
API id from my.telegram.org |
TELEGRAM_HASH |
API hash from my.telegram.org |
DATABASE_URL |
MongoDB connection string |
Recommended for the full experience:
| Variable | Purpose |
|---|---|
BASE_URL |
Public URL for torrent and Mega web file selection |
RCLONE_PATH or GDRIVE_ID |
Default cloud upload destination |
LEECH_DUMP_CHAT |
Default Telegram leech destination |
MEGA_EMAIL / MEGA_PASSWORD |
Optional Mega account for better Mega workflows |
🔐 Keep tokens, OAuth files, MongoDB URLs, rclone configs, Mega accounts, and service-account JSONs out of public commits.
Send /help inside Telegram for the complete live command list.
| Command | Description |
|---|---|
/mirror <link> |
Download and upload to cloud |
/leech <link> |
Download and upload to Telegram |
/qb / /qbleech |
Use qBittorrent for torrent workflows |
/jd / /jdleech |
Use JDownloader |
/ytdl / /ytdlleech |
Download with yt-dlp |
/clone <link> |
Clone supported cloud links/remotes |
/status |
View active and queued tasks |
/stats |
View bot, system, and component stats |
/list <query> |
Search Google Drive |
/count <link> |
Count Google Drive files and size |
/usettings |
User-specific settings |
/bsetting |
Owner configuration panel |
| Argument | Meaning |
|---|---|
-n <name> |
Rename before upload |
-s |
Select torrent/Mega files before downloading |
-z [password] |
ZIP before upload |
-e [password] |
Extract before upload |
-zim / -zipimages |
ZIP only images into one archive |
-mv |
Merge videos in a folder |
-up <destination> |
Override upload destination |
-i <N> |
Process consecutive messages as a multi-task |
-ud <name[,name]|all> |
Select configured Telegram dump destinations |
Examples:
/mirror magnet:?xt=urn:btih:... -s -z
/leech https://example.com/folder -zim
/leech gdrive-folder-link -mv
/mirror link -up remote:path -n CustomName
- 🌐 Port
880serves the FastAPI web UI, file selector, and qBittorrent proxy. - 🔗 Port
8880is used forrclone servewhen configured. - 🛡️
docker-compose.ymlincludes an optional Gluetun VPN scaffold for torrent traffic. - 🍃 MongoDB is required for persistent settings, user data, and task metadata.
- 🧾
sample_config.pyis the source of truth for advanced configuration. - ⚙️
update.pysupports a small environment-variable override allow-list for container deployments.
NEO-WZML is based on WZML-X and focuses on deployment reliability, modern selection flows, and practical operator controls.
| Area | NEO-WZML |
|---|---|
| Mega | Native MegaSDK 8.1.1 and web folder selection |
| Selection | Torrent and Mega selection through the built-in web UI |
| Limits | Universal task locks, per-user ceilings, queues, and cooldowns |
| Media | Auto thumbnails, metadata, screenshots, sample videos, merge video, custom FFmpeg |
| Archives | Extract, ZIP, password ZIP, image-only ZIP |
| Uploads | Telegram, Drive, rclone, and multi-DDL host uploads |
| UX | Save buttons, dump selection, filename formatting, safer group behavior |
| Deployment | Docker bridge networking with optional VPN routing scaffold |
Removed from this fork: NZB/SABnzbd, YouTube upload, IMDB, and broadcast modules.
- Confirm
BOT_TOKEN,OWNER_ID,TELEGRAM_API,TELEGRAM_HASH, andDATABASE_URL. - Check
log.txtfor the first stack trace. - If using Mongo Atlas, allow-list the server or container egress IP.
- Set
BASE_URLto a public URL reachable from your browser. - Publish port
880or put it behind a reverse proxy. - If pincode validation is confusing during setup, temporarily disable
WEB_PINCODE.
- Confirm
token.pickleor service-account JSONs are valid. - Make sure the upload destination exists and the auth principal has access.
- Drive API quota errors are usually temporary; retry after the quota window resets.
- Check tracker reachability from inside the container.
- Use the qBittorrent web proxy on port
880to inspect live state. - Configure Gluetun if your host or ISP blocks torrent traffic.
- 📢 Telegram channel: Chiheisen
- 💬 Support group: ChiheisenUnion
- 🐞 Bugs and feature requests: GitHub Issues
If you report a bug, include:
- The command you ran.
- The relevant log lines.
- Whether the task was mirror, leech, clone, torrent, Mega, or GDrive.
- Your deployment method.
If NEO-WZML saves you time, consider supporting development:
| Role | Person |
|---|---|
| Owner | irisXDR |
| WZML-X developers | SilentDemonSD, rjriajul, CodeWithWeeb, Maverick |
| Original project | anasty17 |
| PyroBlack developers | eyMarv, Delivrance |
Some AI Tools have been used to create certain portions of this repository.