Advanced Features
Features for power users who want more control.
RSS Automation
The bot can monitor RSS feeds and automatically download new content.
Adding an RSS feed
/rssThis opens the RSS management menu where you can:
- Add a feed: Give it a title and URL
- Set filters: Only download what matches
- Set commands: Customize what happens to each new file
- List/remove existing feeds
Filter syntax
When adding a feed, you can filter what to download:
Title https://example.com/rss -inf 1080 or 720|mkv or mp4 -exf flv-inf: Include only titles containing these words|means AND:mkv|mp4→ must have bothmkvANDmp4ormeans OR:1080 or 720→ either1080or720
-exf: Exclude titles containing these words
RSS with commands
You can set what to do with each downloaded item:
Title https://example.com/rss -c -up mrcc:remote:path -rcf --buffer-size:8M-c: Command to run (e.g., leech, mirror, clone)-up: Upload destination-rcf: Rclone flags-d: Seed ratio/time for torrents-z: Zip with password-stv: Case-sensitive filter (trueorfalse)
FFmpeg Processing
Apply FFmpeg commands to files before they're uploaded.
Inline FFmpeg commands
/mirror link -ff ["-i mltb.mkv -c copy -c:s srt mltb.mkv", "-i mltb.audio -c:a libmp3lame -q:a 2 mltb.mp3"]The key is mltb.* — this is a placeholder for your files:
mltb.mkv→ only works on.mkvfilesmltb.video→ works on all video filesmltb.audio→ works on all audio filesmltb→ works on all files, keeps original extension
Add -del to delete the original file after processing.
Preset FFmpeg commands
Set presets in config.py:
FFMPEG_CMDS = {
"subtitle": ["-i mltb.mkv -c copy -c:s srt mltb.mkv"],
"compress": ["-i mltb.video -c:v libx264 -crf 28 mltb"],
}Then use them with: /mirror link -ff subtitle
Metadata Editing
Add metadata to media files before upload.
Basic usage
/mirror link -meta title=My Movie|artist=Me|album=GreatSeparate key-value pairs with |.
Dynamic variables
| Variable | What it becomes |
|---|---|
{filename} | Original filename (with extension) |
{basename} | Filename without extension |
{extension} | File extension (no dot) |
{year} | Year extracted from filename |
{audiolang} | Audio language (auto-detect) |
{sublang} | Subtitle language (auto-detect) |
Per-stream metadata
In User Settings → FFmpeg Settings, you can set different metadata for:
- Audio streams (e.g.,
language={audiolang}) - Video streams (e.g.,
title={basename}) - Subtitle streams (e.g.,
language={sublang})
Escaping pipes
Use \| if you need a literal pipe in your value:
/mirror link -meta title=Movie \| Director's CutTorrent Search
Search for torrents directly from Telegram:
/search ubuntu 24.04This searches multiple torrent sites at once using qBittorrent search plugins. The results show you the name, size, seeders, and leechers.
Set custom search plugins in config:
SEARCH_PLUGINS = [
"https://raw.githubusercontent.com/qbittorrent/.../piratebay.py",
"https://raw.githubusercontent.com/.../leetx.py",
]Web File Selection UI
When you add -s to a torrent mirror command, the bot gives you a link to a web UI where you can select which files to download:
/mirror magnet:?xt=... -sThe web UI is available through your Cloudflare tunnel URL (check docker compose logs tunnel).
If WEB_PINCODE = True (default), you'll need to enter a pincode first.
Torrent Selection without Web UI
You can also select files directly in Telegram:
/select GID12345Or reply to a task message with /select.
Queue System
The bot has a built-in queue to prevent overwhelming your server:
QUEUE_ALL = 3 # Max 3 tasks total
QUEUE_DOWNLOAD = 2 # Max 2 downloading at once
QUEUE_UPLOAD = 1 # Max 1 uploading at onceWhen the queue is full, new tasks are queued and start automatically when a slot frees up.
Use /forcestart [GID] to skip the queue for an important task.
Name Substitution
Swap words in filenames automatically:
/mirror link -ns oldname/newnameFormat: wordToReplace/replacement/sensitive
/sat the end makes it case-sensitive- Use
\to escape special characters:\^$.|?*+()[]{}
Multiple substitutions with |:
/mirror link -ns [1080p]/1080/s | [720p]/720Custom Upload Paths
Set different upload destinations based on file extension:
UPLOAD_PATHS = {
".mkv": "main:/movies",
".mp3": "main:/music",
".pdf": "main:/documents",
}Files are automatically routed to the matching path.
Bot Settings Panel
Owner/Sudo users can change settings on the fly with /botset:
- Config Variables — Change any config value
- On/Off Settings — Toggle features on/off
- Private Files — Upload/delete files (token.pickle, rclone.conf, etc.)
- Qbit Settings — qBittorrent options
- Aria2c Settings — Aria2 options
- Sabnzbd Settings — Usenet options
- JDownloader Sync — Sync JDownloader config
User Settings Panel
Regular users can customize their experience with /userset:
- Upload destination (GDrive / Rclone / Telegram)
- Thumbnail
- Rclone config
- Google Drive token
- Default leech type (document or media)
- Split size
- And more
Multiple Bot Tokens (Parallel Tasks)
Run tasks in parallel using multiple bot tokens:
HELPER_TOKENS = "123456:TOKEN1 789012:TOKEN2"Space-separated list. Each helper bot can handle tasks independently, increasing throughput.
Force Subscription
Require users to join specific channels before using the bot:
FORCE_SUB_IDS = "-1001234567890 -1009876543210"Users who haven't joined will be prompted to join before they can mirror or leech.
Speedtest
Check the server's internet speed:
/speedtestUseful for diagnosing slow downloads.
MediaInfo
Get detailed technical info about any media file:
/mediainfo (reply to a video/audio file)
/mediainfo https://example.com/video.mp4Shows codec, bitrate, resolution, duration, and more.
IMDB / AniList / MyDramaList Search
Look up movies, anime, or dramas without leaving Telegram:
/imdb The Matrix
/anilist Attack on Titan
/mdl My Love from the StarShell & Exec (Owner only)
Run shell commands or Python code directly from Telegram:
/shell ls -la
/shell df -h
/exec print("hello world")
/aexec
import asyncio
await asyncio.sleep(1)
print("done")Gallery / Images
Display random images on bot messages:
/addimage (reply to a photo)Manage images:
/imagesSet USE_IMAGES = True in config to enable random backgrounds. You can auto-fetch wallpapers with:
IMG_SEARCH = "anime, nature, space"
IMG_PAGE = 2
IMG_SOURCES = ["wallpaperflare", "wallhaven"]