• Stars
    star
    180
  • Rank 213,097 (Top 5 %)
  • Language
    Python
  • Created over 4 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Megatron was a telegram file management bot that helped a lot of users, specially movie channel managers to upload their files to telegram by just providing a link to it. The project initially started as roanuedhuru_bot which lately retired and came back as Megatron which was a side project of the famous Maldivian Telegram community - @Baivaru until it retired.

Megadlbot aka Megatron:

Megatron was a telegram file management bot that helped a lot of users, it specifically helped movie channel managers to upload their files to telegram by just providing a link to it. The project initially started as roanuedhuru_bot which lately retired and came back as Megatron which was a side project of the famous Maldivian Telegram community - @Baivaru, until it retired.

Megatron is a project that is very close to my heart, me being the sole brains who developed it since the very beginning, and as you are aware, for the course of its life span the bot was never opensource unlike many other telegram bots which did a similar job. Many users beseeched to make it opensource so after I decided to kill the project I decided not just to make the source code public but to instead build the whole thing from scratch and upload it on YouTube. The purpose of this was to ensure that anyone could create their own bot based on this with ease and to ensure that the code was beautiful and easy to read.

Youtube Playlist

Important libraries used by the application:

  1. aiohttp
  2. aiofiles
  3. pymongo
  4. pyrogram
  5. tgcrypto
  6. Youtube-dl
  7. google-api-python-client

The application makes use of MongoDB for its database, also uses ffprobe from ffmpeg for generating media info. Also optionally it makes use of seedr API to allow download torrents via the bot - however this is a user base setting, that end user needs to setup via options under /dldsettings

To make use of google API to generate google drive links for the files that you upload, you would be required to create a service account and share its key with the bot from the available options at /dldsettings, to generate this key make use of this step by step documentation or otherwise a much in depth detailed documentation here. Also I have shown this process on the 18th Video of the YouTube Series.

Run on Docker 🐳

You can simply ignore everything below if you choose to go with Docker Method

Cloning and running:

  1. Installation of DB

Ubuntu:

sudo apt update
sudo apt install -y mongodb

# create a admin user and assign it roles
mongo
use admin
db.createUser({user:"admin", pwd:"password", roles:[{role:"root", db:"admin"}]})
exit

# edit the YAML config file with your favorite editor to enable authentication on DB instance
vim /etc/mongodb.conf

#Add these lines at the bottom of the YAML config file:
auth=true

# now save the file and once its closed restart mongo service:
service mongod restart

Windows:

a. Download the installer from here, and run it.
b. Follow the MongoDB Community Edition installation wizard.
c. Create a admin user and assign it roles:

# I assume you had used the default location to install.
# To connect a mongo.exe shell to the MongoDB instance, open another Command Interpreter with Administrative privileges and run:
"C:\Program Files\MongoDB\Server\4.4\bin\mongo.exe"
use admin
db.createUser({user:"admin", pwd:"password", roles:[{role:"root", db:"admin"}]})
exit

d. Stop the Mongo MongoDB Server (MongoDB) service from services.msc.
e. Edit the Yamal Config file - mongodb.cfg located at C:\Program Files\MongoDB\Server\4.4\bin with your favorite editor and add the following lines:

security:
  authorization: enabled

f. Save the file and close it, also start the MongoDB Server (MongoDB) service that we stopped at services.msc


  1. Installation of ffmpeg:
    a. Ubuntu: apt install -y ffmpeg.
    b. Windows: A full documentation of how to is here.

Also I had shown this on my video


  1. git clone https://github.com/eyaadh/megadlbot_oss.git, to clone and the repository.
  2. cd megadlbot_oss/, to enter the directory.
  3. pip3 install -r requirements.txt, to install python libraries/dependencies/requirements for the project.

  1. Create a new config.ini using the sample available at mega/working_dir/config.ini.sample at mega/working_dir/.
# Here is a sample of config file and what it should include:
[pyrogram]
# More info on API_ID and API_HASH can be found here: https://docs.pyrogram.org/intro/setup#api-keys
api_id = 
api_hash = 

[plugins]
root = mega/telegram/plugins

[bot-configuration]
# More info on Bot API Key/token can be found here: https://core.telegram.org/bots#6-botfather
api_key = 
session = megadlbot
# Watch this video to understand what the dustbin is: https://www.youtube.com/watch?v=vgzMacnI5Z8
dustbin = 
allowed_users = [123123123, 321321321]
# a list of user ids who are allowed to use this bot

[database]
# In this section db_host is the address of the machine where the MongoDB is running, if you are running 
# both the bot and Mongo on same machine leave it as local host.
# db_username and db_password are the username and password we assigned roleas with at the first step 
# while we installed Database
db_host = localhost
db_username = admin
db_password = 
db_name = megadlbot

# for the following section fill in the FQDN with which end users can reach the host machine, bindaddress is the address of the adapter to bind with while running webserver and the port for the webserver to listen.
[web_server]
bind_address = 0.0.0.0
fqdn = localhost
port = 8080

  1. Run with python3.9 -m mega, stop with CTRL+C.

It is recommended to use virtual environments while running the app, this is a good practice you can use at any of your python projects as virtualenv creates an isolated Python environment which is specific to your project.

Deploying on Heroku:

Deploy

Before clicking the Deploy button make sure you have the following details with you too:

  1. Create a free account on cloud.mongodb.com (This is for the DB and you need its details for the config file as explained above, also keep a note that if you host mongoDB community edition on your own its totally free otherwise you might have limitations).
  2. Create a Telegram channel (This one for the dustbin. As mentioned above watch this video to understand what the dustbin is.)
  3. Well as obvious as it can be create a bot with @BotFather, also get your API ID and API Hash from my.telegram.org.

More Repositories

1

mveargasmdj

Telegram Radio - A User-bot who continuously play random audio files (from the famous telegram music channel @mveargasm) in the intended voice chat.
Python
25
star
2

baboonCaptcha

A telegram bot that requires new joiners to a chat group to be verified by issuing them a captcha to solve. Say no to bots and spammers basically.
Python
25
star
3

stickerBot

A telegram Sticker Bot - You send it a text, it will return you the content as a telegram sticker.
Python
22
star
4

roanuedhuru_bot

The famous roanuedhuru_bot from telegram group @cityofaddu
Python
9
star
5

confessionmvbot

A telegram bot intended for confession channels, the users confess to the bot and for approval the bot forwards the confessions to a group which contains admins for the channel - so that they can review the confession and post it to the channel accordingly.
Python
8
star
6

Watermark-Bash-Telegram-Bot

This is an opensource Telegram Bot built based on bash. Follow the instructions given on README.md to clone this project.
Shell
7
star
7

seedrBlackHole

The project has been done with the mindset of creating a butler/bot to a Media Management Project for a VOD Service - where the application handles downloads and requests for Movies by the end users. The VOD service uses PLEX as the main client–server media player system. Radarr to assist with search and manage Movies and Sonarr for TV series. Jackett to provide indexers for both Radarr and Sonarr.
Python
7
star
8

url_rewriter

A web server that re-writes URL's which at the end of the day can be used as a URL shorten-er. It uses aiohttp as the web server and mongodb to store the Data.
Python
6
star
9

pyro-sekeleton-async

This project was built to demonstrate how we at @baivaru structures - our async pyrogram projects. I could have written a skeleton (directory structures, modules showing where plugins are loaded from and etc) which you could simply clone and build upon. However, doing that could have left you halfway through the whole purpose of “making it easier” and having a skeleton. Therefore, the following project is a fully functional bot that demonstrates most of the common methods, functionalities that pyrogram offers you to start programing a simple telegram bot and some clean practices that we at @baivaru follow which you could refer and imply with your projects.
Python
4
star
10

Evies-Sound-Machine

HTML
3
star
11

plugin.video.baivarutv

Baivaru TV is a kodi plugin that helps you stream the files from famous Telegram Channel - Baivaru Media.
Python
3
star
12

QuranTharujama

A complete collection of Quran Translation in both English and Dhivehi.
Swift
2
star
13

AdhanTimings

Adan Timings for Maldives from a pre-recorded JSON Data sets. Nothing fancy done in the project also in addition to prayer timings it also contains a list of Duas/Zikrs you can go through.
Swift
2
star
14

aiohttp_viber

aioHTTP Viber bot is a fully async viber bot written on basis of Viber REST API. The purpose of this project is to demonstrate how we at @baivaru structures our Viber projects.
Python
1
star
15

contactsBook

Interface for Google Contacts with options for assign users who could access the application to update/amend/insert/delete the contacts respectively. And assign permissions accordingly for users who can edit and only view the contacts.
HTML
1
star