Skip to content

Commands & Settings Reference ​

This page is your complete lookup dictionary for all Telegram Bot commands, .env bootstrap environment variables, and runtime settings editable via /set.


1. Bot Commands Cheat Sheet ​

CommandArgumentsDescription
/start or /help—Open the main interactive control panel
/lang[en|zh]Toggle or set Bot UI and notification language (en or zh)
/status—Show account capabilities, queue counters, worker state, and free disk space
/tasks—List recent migration tasks and inspect progress
/targets—List and manage all destinations (telegram, local, webdav)
/bind[code]In a group/topic: bind it as a target. In private chat: generate a 10-min one-time bind code
/add_tg<chat> [topic_id]Manually add a Telegram target by @username or -100ID and optional Forum Topic ID
/add_local—Launch wizard to create a Local NAS directory target under ARCHIVE_ROOT
/add_webdav—Launch wizard to create a WebDAV server target
/routes—List and manage continuous Watch Routes
/add_route—Launch wizard to create a new Watch Route
/route_set<id> <key> <val|->Override a runtime setting for a specific route (use - to remove override)
/config—Open the interactive runtime settings panel
/get[section|key]View all runtime settings, a specific section (e.g. /get transfer), or a single key
/set<key> <value>Modify a runtime setting immediately (persisted in DB)
/filters—View content filter switches and active keyword/regex rules
/filter_addkeyword|regex <pat>Add a content filter rule
/filter_del<rule_id>Delete a content filter rule by ID
/export[secrets]Export all settings, targets, routes, and filters to YAML (/export secrets includes passwords)
/import[replace]Reply to a YAML file with /import (merge) or /import replace (full overwrite)
/pause / /resume—Pause or resume the background transfer worker
/retry[task_id]Re-queue failed jobs globally or for a specific task
/recover—Reset interrupted in_progress jobs back to pending (when worker is paused)
/cancel_task<task_id>Cancel an active scan or queued task
/verify—Verify that delivered Telegram messages still exist in destination chats
/report—Export a CSV report of skipped oversized files
/login / /logout—Log in or log out the personal Telegram Reader account
/cancel—Abort the current multi-step interactive wizard

2. Environment Variables (.env) ​

Bootstrap variables are loaded on container startup:

VariableRequiredDefaultDescription
API_IDYes—Numeric Telegram API ID from my.telegram.org
API_HASHYes—32-character Telegram API Hash
BOT_TOKENYes—Bot token from @BotFather
ADMIN_IDSYes—Comma-separated numeric Telegram User IDs allowed to control the Bot
BOT_LANGNoenInitial Bot interface language (en or zh)
NOTIFY_CHAT_IDSNoADMIN_IDSComma-separated chat IDs to receive system notifications
USE_BOT_AS_WRITERNotrueUse the Bot (true) or the Reader user account (false) as the default Telegram writer
DATABASE_URLNo(SQLite)Leave empty for default SQLite (data/migrator.db), or set postgresql+asyncpg://... / mysql+aiomysql://...
SECRET_KEYNo(Auto)Master passphrase for encrypting WebDAV credentials at rest. Auto-generated at data/secret.key if empty
PROXY_URLNo—socks5://user:pass@host:port or http://host:port
PROXY_APPLY_TONotelegram,webdavTraffic classes routed through proxy (telegram, webdav, or telegram,webdav)
NO_PROXYNo—Extra hostnames/CIDRs that bypass the proxy (private LAN/Docker names always bypass automatically)
LOG_LEVELNoINFODEBUG, INFO, WARNING, or ERROR

3. Runtime Settings (/set <key> <value>) ​

All runtime settings are stored in the database and take effect immediately without restarting the container:

ui.* — Interface ​

KeyDefaultAllowed Values / Description
ui.languageenen (English) or zh (Simplified Chinese)

transfer.* — Transfer & Media Handling ​

KeyDefaultDescription
transfer.hide_sendertrueHide original sender header on native copy (drop_author)
transfer.drop_captionfalseStrip text captions from media messages
transfer.strip_spoilerstrueRemove Telegram spoiler masks from photos, videos, and text (forces re-upload when present)
transfer.native_copytrueAttempt zero-download server-side copy first when Reader is also Writer and no spoiler removal is needed
transfer.native_onlyfalseSkip messages that cannot be copied natively instead of downloading & re-uploading
transfer.allow_premium_user_fallbackfalseUse a logged-in Telegram Premium Reader account to upload 2–4 GiB files when Bot is the writer
transfer.allow_download_unknown_sizefalseAllow downloading media whose file size is not reported upfront
transfer.caption_overflowsplitHow to handle captions exceeding Telegram's limit: split (send overflow as follow-up text) or truncate
transfer.include.texttrueInclude plain text messages
transfer.include.phototrueInclude photos
transfer.include.videotrueInclude videos
transfer.include.animationtrueInclude GIFs / animations
transfer.include.audiotrueInclude music / audio files
transfer.include.voicetrueInclude voice notes
transfer.include.video_notetrueInclude round video notes
transfer.include.documentfalseInclude generic documents/archives (.zip, .pdf, .apk, etc.)
transfer.include.stickerfalseInclude stickers
transfer.include.otherfalseInclude native-only kinds (polls, contacts, locations, dice)

archive.* — Local NAS & WebDAV Formatting ​

KeyDefaultDescription
archive.sidecar_formatjsonMetadata sidecar format: json, md, both, or none
archive.sidecar_alwaysfalseAlso write a sidecar file for media messages that have no caption
archive.group_by_monthfalseGroup archived files into YYYY-MM subdirectories
archive.folder_namingtitle_idSource folder naming style: title_id, id, or title
archive.webdav_modeautoWebDAV upload strategy: auto, spool (disk buffer), or stream (zero-disk streaming)

limits.* & worker.* — Rate Limiting & Pacing ​

KeyDefaultDescription
limits.download_delay_seconds5.0Minimum delay between media downloads
limits.upload_delay_seconds10.0Minimum delay between media uploads
limits.copy_delay_seconds10.0Minimum delay between native server-side copies
worker.batch_size50Number of Telegram deliveries processed before taking a batch cooldown pause
worker.pause_between_batches_seconds120Cooldown pause (in seconds) between batches to protect accounts from FloodWait
worker.concurrency3Number of concurrent worker tasks (1–8)
watch.poll_interval_seconds300Interval (in seconds) between watermark catch-up polls on Watch Routes
downloads.min_free_bytes5368709120Minimum free disk space (5 GiB) required before starting a new download

Released under the AGPL-3.0 License.