Torrent Hunt Bot is a telegram bot to search and explore torrents from different sources. It can show you the result of your query in a snap. Furthermore, you can explore top, trending, & popular torrents and browse torrents of a certain category.
- Superfast and good pagination
- Supports 18 different languages
- Custom query search
- Explore trending, popular, and top torrents
- Browse torrents of a certain category
- Get info, images, magnet link and .Torrent file of the torrent
- Get the shortened URL of the magnet link
- Supports inline query with thumbnail
- Restriction mode to hide explicit content
- Directly add the torrent in your seedr account
- Auto typo correction and suggestions
Torrent Hunt Bot can talk in 18 different languages.
- Bengali (Verified by sobuj53)
- Belarusian
- Catalan
- Dutch
- English (Verified)
- French
- German
- Hindi
- Italian
- Korean
- Malay
- Nepali
- Polish (Verified by Oskar)
- Portuguese
- Russian
- Spanish
- Turkish (Verified by Berce)
- Ukrainian
Unverified languages are translated with Google Translator and may contain errors. Feel free to create a Pull Request with modifications to the language.json file.
While making a PR, make sure to add yourself and a verified tag on the language.
If you want to host this bot for public use, you shall not remove or replace our links.
See LICENSE for more information.
-
Clone the repository, create a virtual environment, and install the requirements
git clone https://github.com/hemantapkh/torrenthunt && virtualenv env && source env/bin/activate && cd torrenthunt && pip install -r requirements.txt
-
Host the Torrents-API on your own server for better performance or leave it default. This API will be used for inline query only.
-
Edit the src/sample-config.json file and rename it to
config.json
βοΈ Click here to see a sample config file
{ "botToken": "<BOT Token>", "connectionType": "polling", "webhookOptions":{ "webhookHost": null, "webhookPort": null, "webhookListen": "0.0.0.0", "sslCertificate": null, "sslPrivateKey": null }, "adminId" : "<Admin UserId>", "database": "torrenthunt.sqlite", "magnetDatabase": "magnets.sqlite", "cache": "cache", "cacheTime": 86400, "language": "language.json", "apiLink": "https://torrents-api.ryukme.repl.co/api" }
-
Run the migration.py file to open a database.
python migrations.py
-
Now, start the bot polling
python torrenthunt.py
While polling and webhooks both accomplish the same task, webhooks are far more efficient. Polling sends a request for new events (specifically, Create, Retrieve, and Delete events, which signal changes in data) at a predetermined frequency and waits for the endpoint to respond whereas, webhooks only transfer data when there is new data to send, making them 100% efficient. That means that polling creates, on average, 66x more server load than webhooks. (r)
-
Generate an SSL certificate
>> openssl genrsa -out sslPrivateKey.pem 2048 >> openssl req -new -x509 -days 3650 -key sslPrivateKey.pem -out sslCertificate.pem
"Common Name (e.g. server FQDN or YOUR name)" should be your Host IP.
-
Rename the src/sample-config.json file to
config.json
and set- connectionType = webhook
- webhookHost = IP/Host where the bot is running
- webhookPort = PORT (Need to be opened)
- webhookListen = 0.0.0.0 or IP address in some VPS
- sslCertificate = Directory of SSL certificate
- sslPrivateKey = Directory of SSL private key
-
And, start the aioHttp server.
python torrenthunt.py
You can set up GitHub actions to update the bot automatically on every push.
-
Fork the repository on your GitHub account.
-
Create a directory
mkdir /opt/TorrentHunt && cd /opt/TorrentHunt
You should create a directory with the same name as above inside /opt, or edit the deploy.yml and deployScript.sh
-
Create a virtual environment in the directory with name
env
virtualenv env
-
Clone the repository and install the requirements in the virtual environment
git clone https://github.com/hemantapkh/TorrentHunt && cd TorrentHunt && source /opt/TorrentHunt/env/bin/activate && pip install -r requirements.txt
-
Create a database and move the database into
/opt/TorrentHunt
python migrations.py && mv database.sqlite /opt/TorrentHunt
-
Generate SSH keys for your VPS and keep the private key in your GitHub secrets
- Create the ssh key pair using the
ssh-keygen
command. You must leave the passphrase empty while generating the SSH key. - Copy and install the public ssh key on the server using
sh-copy-id -i your_public_key user@host
command or add the content of the public key in~/.ssh/authorized_keys
. - Now, copy the content of the private key and paste it on your GitHub secrets with the name
SSHKEY
. (Repository settings >> secrets >> New repository secret)
- Create the ssh key pair using the
-
Create another GitHub secret with name
HOST
and save your Host IP. -
Rename the src/sample-config.json file to config.json and set
- database = /opt/TorrentHunt/database.sqlite
- If you are using webhooks, copy the SSL certificate and private key in
/opt/TorrentHunt
and set- sslCertificate = /opt/TorrentHunt/sslCertificate.pem
- sslPrivateKey = /opt/TorrentHunt/sslPrivateKey.pem
-
Copy the content of the edited config.json and save it on your repository secrets with name
CONFIG
. Don't forget to wrap the content of config file with single quotes like this'Content of config.json'
. -
And, start the bot.
source /opt/TorrentHunt/env/bin/activate && screen -dm python /opt/TorrentHunt/TorrentHunt/torrenthunt.py
Now, every time you push on the main
branch, the bot automatically gets updated.
Any contributions you make are greatly appreciated.
For minor fix, you can directly create a pull request and for adding a new feature, let's first discuss it in our telegram group or in GitHub Discussion.
π Special thanks to Ryuk-me for creating Torrents-Api which is used for inline query in Torrent Hunt.
βοΈ Made using 1337x and pyTelegramBotApi in Pythonπ by Hemanta Pokharel [βοΈ π¬ πΊ]