This repository is a feature-enhanced version of the mirror-leech-telegram-bot. It integrates various improvements from multiple sources, expanding functionality while maintaining efficiency. Unlike the base repository, this version is fully deployable on Heroku.
View All Steps Click Here
Installing requirements
- Clone this repo:
git clone https://github.com/SilentDemonSD/WZML-X mirrorbot/ && cd mirrorbot
Build And Run the Docker Image
Make sure you still mount the app folder and installed the docker from official documentation.
- There are two methods to build and run the docker:
- Using official docker commands.
- Using docker-compose. (Recommended)
- Start Docker daemon (SKIP if already running, mostly you don't need to do this):
sudo dockerd
- Build Docker image:
sudo docker build . -t wzmlx
- Run the image:
sudo docker run -p 80:80 -p 8080:8080 wzmlx
- To stop the running image:
sudo docker ps
sudo docker stop id
NOTE: If you want to use ports other than 80 and 8080 for torrent file selection and rclone serve respectively, change it in docker-compose.yml also.
- Install docker-compose
sudo apt install docker-compose
- Build and run Docker image or to view current running image:
sudo docker-compose up
- After editing files with nano for example (nano start.sh):
sudo docker-compose up --build
- To stop the running image:
sudo docker-compose stop
- To run the image:
sudo docker-compose start
- To get latest log from already running image (after mounting the folder):
sudo docker-compose up
- Tutorial video from Tortoolkit repo for docker-compose and checking ports
IMPORTANT NOTES:
- Set
BASE_URL_PORT
andRCLONE_SERVE_PORT
variables to any port you want to use. Default is80
and8080
respectively. - You should stop the running image before deleting the container and you should delete the container before the image.
- To delete the container (this will not affect on the image):
sudo docker container prune
- To delete the images:
sudo docker image prune -a
- Check the number of processing units of your machine with
nproc
cmd and times it by 4, then editAsyncIOThreadsCount
in qBittorrent.conf.
- There are two methods to build and run the docker:
View All Variables Click Here
Required Fields
-
BOT_TOKEN
: The Telegram Bot Token that you got from @BotFather.Str
-
OWNER_ID
: The Telegram User ID (not username) of the Owner of the bot.Int
-
TELEGRAM_API
: This is to authenticate your Telegram account for downloading Telegram files. You can get this from https://my.telegram.org.Int
-
TELEGRAM_HASH
: This is to authenticate your Telegram account for downloading Telegram files. You can get this from https://my.telegram.org.Str
-
Optional Fields
USER_SESSION_STRING
: To download/upload from your telegram account and to send rss. To generate session string use this commandpython3 generate_string_session.py
after mounting repo folder for sure.Str
. NOTE: You can't use bot with private message. Use it with superGroup.DATABASE_URL
: Your Mongo Database URL (Connection string). Follow this Generate Database to generate database. Data will be saved in Database: auth and sudo users, users settings including thumbnails for each user, rss data and incomplete tasks. NOTE: You can always edit all settings that saved in database from the official site -> (Browse collections).Str
DOWNLOAD_DIR
: The path to the local folder where the downloads should be downloaded to.Str
CMD_SUFFIX
: commands index number. This number will added at the end all commands.Str
|Int
AUTHORIZED_CHATS
: Fill user_id and chat_id of groups/users you want to authorize. Separate them by space.Int
SUDO_USERS
: Fill user_id of users whom you want to give sudo permission. Separate them by space.Int
BLACKLIST_USERS
: Fill user_id of users you wish to prohibit from using the bot. Separate them by space.Int
STATUS_LIMIT
: Limit the no. of tasks shown in status message with buttons. Default is10
. NOTE: Recommended limit is4
tasks.Int
DEFAULT_UPLOAD
: Whetherrc
to upload toRCLONE_PATH
orgd
to upload toGDRIVE_ID
orddl
to upload toDDL
. Default isgd
. Read More HERE.Str
STATUS_UPDATE_INTERVAL
: Time in seconds after which the progress/status message will be updated. Recommended10
seconds at least.Int
AUTO_DELETE_MESSAGE_DURATION
: Interval of time (in seconds), after which the bot deletes it's message and command message which is expected to be viewed instantly. NOTE: Set to-1
to disable auto message deletion.Int
INCOMPLETE_TASK_NOTIFIER
: Get incomplete task messages after restart. Require database and superGroup. Default isFalse
.Bool
SET_COMMANDS
: Automatically set the Bot Commands no need to set from@botfather
. Default isFalse
.Bool
EXTENSION_FILTER
: File extensions that won't upload/clone. Separate them by space. No need to add.
Str
YT_DLP_OPTIONS
: Default yt-dlp options. Check all possible options HERE or use this script to convert cli arguments to api options. Format: key:value|key:value|key:value. Add^
before integer or float, some numbers must be numeric and some string.str
- Example: "format:bv*+mergeall[vcodec=none]|nocheckcertificate:True"
FSUB_IDS
: Fill chat_id(-100xxxxxx) of groups/channel you want to force subscribe. Separate them by space. Int- Note: Bot should be added in the filled chat_id as admin
BOT_PM
: File/links send to the BOT PM. Default isFalse
.Bool
GDrive Tools
GDRIVE_ID
: This is the Folder/TeamDrive ID of the Google Drive ORroot
to which you want to upload all the mirrors using google-api-python-client.Str
USER_TD_MODE
: Enable the User-TD feature i.e user can upload file into their own drive. Default isFalse
.Bool
USER_TD_SA
: Show your SA account in the usetting so that user can add that in its own TD to enable uploading Using SA. SA will be an email/group_email like[email protected]
INDEX_URL
: Refer to https://gitlab.com/ParveenBhadooOfficial/Google-Drive-Index.Str
USE_SERVICE_ACCOUNTS
: Whether to use Service Accounts or not, with google-api-python-client. For this to work see Using Service Accounts section below. Default isFalse
.Bool
IS_TEAM_DRIVE
: SetTrue
if uploading to TeamDrive using google-api-python-client. Default isFalse
.Bool
STOP_DUPLICATE
: Bot will check file/folder name in Drive incase uploading toGDRIVE_ID
. If it's present in Drive then downloading or cloning will be stopped. (NOTE: Item will be checked using name and not hash, so this feature is not perfect yet). Default isFalse
.Bool
DISABLE_DRIVE_LINK
: Disable drive link button. Default isFalse
.Bool
GD_INFO
: Description of file/folder uploaded to Google Drive.
API's/Cookies
REAL_DEBRID_API
: Api ofreal-debrid.com
. Support the PremiumBypass Download limit
and support theCached Magnets
.DEBRID_LINK_API
: Api ofdebrid-link.com
. Support the PremiumBypass Download limit
.FILELION_API
: Api offilelions.com
to download the link from the filelion siteGDTOT_CRYPT
: Use Gdtot crpyt to bypass the GDTOT links.JIODRIVE_TOKEN
: Use Jiodrive Token to bypass the jiodrive links.
RClone
RCLONE_PATH
: Default rclone path to which you want to upload all the files/folders using rclone.Str
RCLONE_FLAGS
: key:value|key|key|key:value . Check here all RcloneFlags.Str
RCLONE_SERVE_URL
: Valid URL where the bot is deployed to use rclone serve. Format of URL should behttp://myip
, wheremyip
is the IP/Domain(public) of your bot or if you have chosen port other than80
so write it in this formathttp://myip:port
(http
and nothttps
).Str
RCLONE_SERVE_PORT
: Which is the RCLONE_SERVE_URL Port. Default is8080
.Int
RCLONE_SERVE_USER
: Username for rclone serve authentication.Str
RCLONE_SERVE_PASS
: Password for rclone serve authentication.Str
Update
UPSTREAM_REPO
: Your github repository link, if your repo is private addhttps://username:{githubtoken}@github.com/{username}/{reponame}
format. Get token from Github settings. So you can update your bot from filled repository on each restart.Str
.- NOTE: Any change in docker or requirements you need to deploy/build again with updated repo to take effect. DON'T delete .gitignore file. For more information read THIS.
UPSTREAM_BRANCH
: Upstream branch for update. Default ismaster
.Str
Telegram Leech & Mirror
LEECH_SPLIT_SIZE
: Size of split in bytes. Default is2GB
. Default is4GB
if your account is premium.Int
AS_DOCUMENT
: Default type of Telegram file upload. Default isFalse
mean as media.Bool
EQUAL_SPLITS
: Split files larger than LEECH_SPLIT_SIZE into equal parts size (Not working with zip cmd). Default isFalse
.Bool
MEDIA_GROUP
: View Uploaded splitted file parts in media group. Default isFalse
.Bool
.LEECH_FILENAME_PREFIX
: Add custom prefix to leeched file name.Str
LEECH_FILENAME_SUFFIX
: Add custom suffix to leeched file name.Str
LEECH_FILENAME_CAPTION
: Add custom caption to leeched file.Str
LEECH_FILENAME_REMNAME
: Remove custom word from leeched file name.Str
MIRROR_FILENAME_PREFIX
: Add custom prefix to mirrored file name.Str
MIRROR_FILENAME_SUFFIX
: Add custom suffix to mirrored file name.Str
MIRROR_FILENAME_REMNAME
: Remove custom word from mirrored file name.Str
Log Channel/superGroup(Support topics)
LEECH_LOG_ID
: Chat ID to where leeched files would be uploaded.Int
. NOTE: Only available for superGroup/channel. Add-100
before channel/superGroup id. In short don't add bot id or your id!. For topic support make this formatchat_id:topic_id
MIRROR_LOG_ID
: Chat ID to where Mirror files would be Send.Int
. NOTE: Only available for superGroup/channel. Add-100
before channel/superGroup id. In short don't add bot id or your id!. For topic support make this formatchat_id:topic_id
LINKS_LOG_ID
: Chat ID to where Link logs would be Send.Int
. NOTE: Only available for superGroup/channel. Add-100
before channel/superGroup id. In short don't add bot id or your id!.- Note: LEECH_LOG_ID & MIRROR_LOG_ID it's multiple, For multiple id Separate them by space.
- Warning: leech log is multiple only in case of channel. i.e it doesn't support multiple Topics (for now)
qBittorrent/Aria2c
TORRENT_TIMEOUT
: Timeout of dead torrents downloading with qBittorrent and Aria2c in seconds.Int
BASE_URL
: Valid BASE URL where the bot is deployed to use torrent web files selection. Format of URL should behttp://myip
, wheremyip
is the IP/Domain(public) of your bot or if you have chosen port other than80
so write it in this formathttp://myip:port
(http
and nothttps
).Str
BASE_URL_PORT
: Which is the BASE_URL Port. Default is80
.Int
WEB_PINCODE
: Whether to ask for pincode before selecting files from torrent in web or not. Default isFalse
.Bool
.- Qbittorrent NOTE: If your facing ram issues then set limit for
MaxConnections
, decreaseAsyncIOThreadsCount
, set limit ofDiskWriteCacheSize
to32
and decreaseMemoryWorkingSetLimit
from qbittorrent.conf or bsetting command.
- Qbittorrent NOTE: If your facing ram issues then set limit for
RSS
RSS_DELAY
: Time in seconds for rss refresh interval. Recommended900
second at least. Default is900
in sec.Int
RSS_CHAT_ID
: Chat ID where rss links will be sent. If you want message to be sent to the channel then add channel id. Add-100
before channel id.Int
- RSS NOTES:
RSS_CHAT_ID
is required, otherwise monitor will not work. You must useUSER_STRING_SESSION
--OR-- CHANNEL. If using channel then bot should be added in both channel and group(linked to channel) andRSS_CHAT_ID
is the channel id, so messages sent by the bot to channel will be forwarded to group. Otherwise withUSER_STRING_SESSION
add group id forRSS_CHAT_ID
. IfDATABASE_URL
not added you will miss the feeds while bot offline.
- RSS NOTES:
Mega
MEGA_EMAIL
: E-Mail used to sign-in on mega.nz for using premium account.Str
MEGA_PASSWORD
: Password for mega.nz account.Str
Queue System
QUEUE_ALL
: Number of parallel tasks of downloads and uploads. For example if 20 task added andQUEUE_ALL
is8
, then the summation of uploading and downloading tasks are 8 and the rest in queue.Int
. NOTE: if you want to fillQUEUE_DOWNLOAD
orQUEUE_UPLOAD
, thenQUEUE_ALL
value must be greater than or equal to the greatest one and less than or equal to summation ofQUEUE_UPLOAD
andQUEUE_DOWNLOAD
.QUEUE_DOWNLOAD
: Number of all parallel downloading tasks.Int
QUEUE_UPLOAD
: Number of all parallel uploading tasks.Int
Limits
DAILY_TASK_LIMIT
: Maximum task a user can do in one day. use theInt
DAILY_MIRROR_LIMIT
: Total size upto which user can Mirror in one day. the default unit isGB
.Int
DAILY_LEECH_LIMIT
: Total size upto which user can Leech in one day. the default unit isGB
.Int
USER_MAX_TASKS
: Limit the Maximum task for users of group at a time.Int
BOT_MAX_TASKS
: Limit the Maximum task for bots of group at a time.Int
TORRENT_LIMIT
: To limit the size of torrent download. the default unit isGB
.Int
DIRECT_LIMIT
: To limit the size of direct link download. the default unit isGB
.Int
GDRIVE_LIMIT
: To limit the size of Google Drive folder/file link for leech, Zip, Unzip. the default unit isGB
.Int
CLONE_LIMIT
: To limit the size of Google Drive folder/file which you can clone. the default unit isGB
.Int
YTDLP_LIMIT
: To limit the size of ytdlp download. the default unit isGB
.Int
PLAYLIST_LIMIT
: To limit Maximum Playlist Number.Int
LEECH_LIMIT
: To limit the Torrent/Direct/ytdlp leech size. the default unit isGB
.Int
MEGA_LIMIT
: To limit the size of Mega download. the default unit isGB
.Int
STORAGE_THRESHOLD
: To leave specific storage free and any download will lead to leave free storage less than this value will be cancelled the default unit isGB
.Int
USER_TIME_INTERVAL
: Time Gap between two consecutive link/file mirror/leech operations. The default value is set to0
seconds. unit issec
.int
Templates
ANIME_TEMPLATE
: Set template for anime...IMDB_TEMPLATE
: Set your imdb template...MDL_TEMPLATE
: Set your MyDramaList template...
Telegraph
TITLE_NAME
: Titlename
for Telegraph pages (while using /list command)AUTHOR_NAME
: Authorname
for Telegraph pagesAUTHOR_URL
: AuthorURL
for Telegraph pageCOVER_IMAGE
: telegraph header image. usegraph.org
link of image
Extra
-
SAFE_MODE
: Include- Remove filename from the auth group
- Remove Leech file index link from auth group (leech index directly send to BOT_PM)
- Remove Mirror link from auth group (Link directly send to BOT_PM)
- NOTE:
BOT_PM
Should beTrue
to get the Links in PM whileSAFE_MODE
isTrue
- NOTE:
-
DELETE_LINKS
: Delete links after used. Default isFalse
.Bool
-
CLEAN_LOG_MSG
: Clean log messages i.e remove the LEECH started msg from the leech log. Default isFalse
.Bool
-
SHOW_EXTRA_CMDS
: Add old cmds like zipleech... Default isFalse
.Bool
-
TIMEZONE
: Set timezone for the bot. Checkout the list to get the proper timezone. Default isAsia/Kolkata
. -
IMAGES
: Add multiple telgraph(graph.org) image links that are seperated by spaces. -
IMG_SEARCH
: Put Keyword to Download Images. Sperarte each name by , likeanime
,iron man
,god of war
-
IMG_PAGE
: Set the page value for downloading a image. Each page have approx 70 images. Deafult is1
.Int
-
BOT_THEME
: Change the theme of bot. For now theme availabe isminimal
.- You can make your own theme checkout this link https://t.ly/9rVXq
-
EXCEP_CHATS
:CHAT_ID
of aSuperGroup
where you want to disable the logging feature for that specific group. Logging features will remain active in other authorized chats that have been filled. Add-100
before superGroup id. In short don't add bot id or your id!.
M/L Buttons
SHOW_MEDIAINFO
: Mediainfo button of file. Default isFalse
.Bool
SCREENSHOTS_MODE
: Enable or Diable generating Screenshots via -ss arg. Default isFalse
.Bool
SAVE_MSG
: Save Button in each file and link so that every user direcly save it without forwarding. Default isFalse
.Bool
SOURCE_LINK
: Source button of files and links. Default isFalse
.Bool
Token system
TOKEN_TIMEOUT
: Token timeout for each group member in sec. Default is21600
.Int
LOGIN_PASS
: Permanent pass for user to skip the token system
Torrent Search
SEARCH_API_LINK
: Search api app link. Get your api from deploying this repository.Str
- Supported Sites:
1337x, Piratebay, Nyaasi, Torlock, Torrent Galaxy, Zooqle, Kickass, Bitsearch, MagnetDL, Libgen, YTS, Limetorrent, TorrentFunk, Glodls, TorrentProject and YourBittorrent
SEARCH_LIMIT
: Search limit for search api, limit for each site and not overall result limit. Default is zero (Default api limit for each site).Int
SEARCH_PLUGINS
: List of qBittorrent search plugins (github raw links). I have added some plugins, you can remove/add plugins as you want. Main Source: qBittorrent Search Plugins (Official/Unofficial).List
-
Click Here For Description
SilentDemonSD |
CodeWithWeeb |
Maverick |
Author and DDL, UI Design, More Customs.. | Author and Wraps Up Features | Co-Author & Bug Tester |