mirror of
https://github.com/avipatilpro/FileStreamBot.git
synced 2026-01-15 22:32:53 -03:00
🚀 Added Heroku Support
- Added Heroku Support - Added a Readme since the repo page was looking so bad. - Removed unused variables
This commit is contained in:
149
README.md
Normal file
149
README.md
Normal file
@@ -0,0 +1,149 @@
|
||||
<h1 align="center">Telegram File Stream Bot</h3>
|
||||
<p align="center">
|
||||
<a href="https://github.com/EverythingSuckz/TG-FileStreamBot">
|
||||
<img src="https://socialify.git.ci/EverythingSuckz/TG-FlieStreamBot/image?description=1&font=Source%20Code%20Pro&forks=1&issues=1&logo=https%3A%2F%2Fwww.flaticon.com%2Fpremium-icon%2Ficons%2Fsvg%2F2321%2F2321089.svg&pattern=Circuit%20Board&pulls=1&stargazers=1&theme=Dark" alt="Cover Image" height=400>
|
||||
</a>
|
||||
<p align="center">
|
||||
A Telegram bot to stream files to web
|
||||
<br />
|
||||
<a href="https://telegram.dog/TG_FileStreamBot"><strong>Telegram Bot »</strong></a>
|
||||
<br />
|
||||
<a href="https://github.com/EverythingSuckz/TG-FileStreamBot/issues">Report a Bug</a>
|
||||
|
|
||||
<a href="https://github.com/EverythingSuckz/TG-FileStreamBot/issues">Request Feature</a>
|
||||
</p>
|
||||
</p>
|
||||
|
||||
<hr>
|
||||
|
||||
<details open="open">
|
||||
<summary>Table of Contents</summary>
|
||||
<ol>
|
||||
<li>
|
||||
<a href="#about-this-bot">About this Bot</a>
|
||||
<ul>
|
||||
<li><a href="#original-repository">Original Repository</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#how-to-make-your-own">How to make your own</a>
|
||||
<ul>
|
||||
<li><a href="#deploy-on-heroku">Deploy using Heroku</a></li>
|
||||
<li><a href="#host-it-on-vps-or-locally">Run it in a VPS / local</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#setting-up-things">Setting up things</a></li>
|
||||
<ul>
|
||||
<li><a href="#mandatory-vars">Mandatory Vars</a></li>
|
||||
<li><a href="#optional-vars">Optional Vars</a></li>
|
||||
</ul>
|
||||
<li><a href="#how-to-use-the-bot">How to use the bot</a></li>
|
||||
<li><a href="#contributing">Contributing</a></li>
|
||||
<li><a href="#contact-me">Contact me</a></li>
|
||||
<li><a href="#credits">Credits</a></li>
|
||||
</ol>
|
||||
</details>
|
||||
|
||||
## About This Bot
|
||||
|
||||
<p align="center">
|
||||
<a herf="https://github.com/EverythingSuckz/TG-FileStreamBot">
|
||||
<img src="https://www.flaticon.com/premium-icon/icons/svg/2626/2626281.svg" height="100" width="100" alt="Telegram Logo">
|
||||
</a>
|
||||
</p>
|
||||
<p align='center'>
|
||||
This bot will give you stream links for Telegram files without the need of waiting till the download completes
|
||||
</p>
|
||||
|
||||
### Original Repository
|
||||
|
||||
The main working part was taken from [Megatron](https://github.com/eyaadh/megadlbot_oss) and thanks to [eyaadh](https://github.com/eyaadh) for his awesome project.
|
||||
|
||||
## How to make your own
|
||||
|
||||
Either you could locally host or deploy on [Heroku](https://heroku.com)
|
||||
|
||||
### Deploy on Heroku
|
||||
|
||||
Press the below button to Fast deply to Heroky
|
||||
|
||||
[](https://heroku.com/deploy)
|
||||
|
||||
then goto the <a href="#mandatory-vars">variables tab</a> for more info on setting up environmental variables.
|
||||
|
||||
### Host it on VPS or Locally
|
||||
|
||||
```sh
|
||||
git clone https://github.com/EverythingSuckz/TG-FlieStreamBot
|
||||
cd TG-FlieStreamBot
|
||||
virtualenv -p /usr/bin/python3 venv
|
||||
. ./venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
python3 -m WebStreamer
|
||||
```
|
||||
|
||||
and to stop the whole bot,
|
||||
do <kbd>CTRL</kbd>+<kbd>C</kbd>
|
||||
|
||||
## Setting up things
|
||||
|
||||
If you're on Heroku, just add these in the Environmental Variables
|
||||
or if you're Locally hosting, create a file named `.env` in the root directory and add all the variables there.
|
||||
An example of `.env` file:
|
||||
|
||||
```sh
|
||||
API_ID=452525
|
||||
API_HASH=esx576f8738x883f3sfzx83
|
||||
BOT_TOKEN=55838383:yourtbottokenhere
|
||||
BIN_CHANNEL=-100
|
||||
PORT=8080
|
||||
FQDN=yourserverip
|
||||
```
|
||||
|
||||
### Mandatory Vars
|
||||
|
||||
`API_ID` : Goto [my.telegram.org](https://my.telegram.org) to obtain this.
|
||||
|
||||
`API_HASH` : Goto [my.telegram.org](https://my.telegram.org) to obtain this.
|
||||
|
||||
`BOT_TOKEN` : Get the bot token from [@BotFather](https://telegram.dog/BotFather)
|
||||
|
||||
`BIN_CHANNEL` : Create a new channel (private/public), add [@missrose_bot](https://telegram.dog/MissRose_bot) as admin to the channel and type /id. Now copy paste the ID into this field.
|
||||
|
||||
|
||||
### Optional Vars
|
||||
|
||||
`SLEEP_THRESHOLD` : Set a sleep threshold for flood wait exceptions happening globally in this telegram bot instance, below which any request that raises a flood wait will be automatically invoked again after sleeping for the required amount of time. Flood wait exceptions requiring higher waiting times will be raised. Defaults to 60 seconds.
|
||||
|
||||
`WORKERS` : Number of maximum concurrent workers for handling incoming updates. Defaults to `3`
|
||||
|
||||
`PORT` : The port that you want your webapp to be listened to. Defaults to `8080`
|
||||
|
||||
`WEB_SERVER_BIND_ADDRESS` : Your server bind adress. Defauls to `0.0.0.0`
|
||||
|
||||
`FQDN` : A Fully Qualified Domain Name if present. Defaults to `WEB_SERVER_BIND_ADDRESS`
|
||||
|
||||
## How to use the bot
|
||||
|
||||
:warning: **Before using the bot, don't forget to add the bot to the `BIN_CHANNEL` as an admin**
|
||||
|
||||
`/start` : To check if the bot is alive or not.
|
||||
|
||||
To get an instant stream link, just forward any media to the bot and boom, its fast af.
|
||||
|
||||
## Contributing
|
||||
|
||||
Feel free to contribute to this project if you have any further ideas
|
||||
|
||||
## Contact me
|
||||
|
||||
[](https://xn--r1a.click/WhySooSerious)
|
||||
[](https://xn--r1a.click/WhyThisUsername)
|
||||
|
||||
You can contact either via my [Telegram Chat](https://xn--r1a.click/WhyThisUsername) or you can PM me on [@EverythingSuckz](https://xn--r1a.click/EverythingSuckz)
|
||||
|
||||
## Credits
|
||||
|
||||
- Me
|
||||
- [eyaadh](https://github.com/eyaadh) for his awesome [Megatron Bot](https://github.com/eyaadh/megadlbot_oss)
|
||||
- [Dan Tès](https://telegram.dog/haskell) for his [Pyrogram Library](https://github.com/pyrogram/pyrogram)
|
||||
@@ -14,7 +14,7 @@ from .vars import Var
|
||||
from aiohttp import web
|
||||
from .server import web_server
|
||||
|
||||
ppath = f"WebStreamer/bot/plugins/*.py"
|
||||
ppath = "WebStreamer/bot/plugins/*.py"
|
||||
files = glob.glob(ppath)
|
||||
|
||||
loop = asyncio.get_event_loop()
|
||||
@@ -43,12 +43,14 @@ async def start_services():
|
||||
print('------------------- Initalizing Web Server -------------------')
|
||||
app = web.AppRunner(await web_server())
|
||||
await app.setup()
|
||||
bind_address = "0.0.0.0" if Var.ENV else Var.FQDN
|
||||
bind_address = "0.0.0.0" if Var.ON_HEROKU else Var.FQDN
|
||||
await web.TCPSite(app, bind_address, Var.PORT).start()
|
||||
print('\n')
|
||||
print('----------------------- Service Started -----------------------')
|
||||
print(' bot =>> {}'.format((await StreamBot.get_me()).first_name))
|
||||
print(' server ip =>> {}:{}'.format(bind_address, Var.PORT))
|
||||
if Var.ON_HEROKU:
|
||||
print(' app runnng on =>> {}'.format(Var.FQDN))
|
||||
print('---------------------------------------------------------------')
|
||||
await idle()
|
||||
|
||||
|
||||
@@ -7,19 +7,18 @@ from dotenv import load_dotenv
|
||||
load_dotenv()
|
||||
|
||||
class Var(object):
|
||||
ENV = bool(getenv('ENV', False))
|
||||
API_ID = int(getenv('API_ID'))
|
||||
API_HASH = str(getenv('API_HASH'))
|
||||
BOT_TOKEN = str(getenv('BOT_TOKEN'))
|
||||
SLEEP_THRESHOLD = int(getenv('SLEEP_THRESHOLD', '300'))
|
||||
SLEEP_THRESHOLD = int(getenv('SLEEP_THRESHOLD', '60'))
|
||||
WORKERS = int(getenv('WORKERS', '3'))
|
||||
BIN_CHANNEL = int(getenv('BIN_CHANNEL', None))
|
||||
FQDN = str(getenv('FQDN', 'localhost'))
|
||||
BIN_CHANNEL = int(getenv('BIN_CHANNEL', None))
|
||||
PORT = int(getenv('PORT', 8080))
|
||||
BIND_ADRESS = str(getenv('BIND_ADRESS', '0.0.0.0'))
|
||||
CACHE_DIR = str(getenv('CACHE_DIR', 'WebStreamer/bot/cache'))
|
||||
OWNER_ID = int(getenv('OWNER_ID'))
|
||||
BIND_ADRESS = str(getenv('WEB_SERVER_BIND_ADDRESS', '0.0.0.0'))
|
||||
OWNER_ID = int(getenv('OWNER_ID', None)) #TODO
|
||||
if 'DYNO' in environ:
|
||||
ON_HEROKU = True
|
||||
APP_NAME = str(getenv('APP_NAME'))
|
||||
else:
|
||||
ON_HEROKU = False
|
||||
ON_HEROKU = False
|
||||
FQDN = str(getenv('FQDN', BIND_ADRESS)) if not ON_HEROKU else APP_NAME+'.herokuapp.com'
|
||||
68
app.json
Normal file
68
app.json
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"name": "TG-FlieStreamBot",
|
||||
"description": "A Pyrogram Telegram bot to Stream Telegram files to web.",
|
||||
"keywords": [
|
||||
"telegram",
|
||||
"stream",
|
||||
"web",
|
||||
"pyrogram",
|
||||
"aiohttp",
|
||||
"python",
|
||||
"plugin",
|
||||
"modular",
|
||||
"media"
|
||||
],
|
||||
"repository": "https://github.com/EverythingSuckz/TG-FlieStreamBot",
|
||||
"success_url": "https://telegram.dog/WhyThisUsername",
|
||||
"website": "stream.wrench.gq",
|
||||
"env": {
|
||||
"ENV": {
|
||||
"description": "Set this to True if you don't want to crash the bot",
|
||||
"value": "True"
|
||||
},
|
||||
"APP_NAME": {
|
||||
"description": "Copy-Paste the app name that you just typed above."
|
||||
},
|
||||
"API_ID": {
|
||||
"description": "Get this value from https://my.telegram.org"
|
||||
},
|
||||
"API_HASH": {
|
||||
"description": "Get this value from https://my.telegram.org"
|
||||
},
|
||||
"BOT_TOKEN": {
|
||||
"description": "Get this value from @BotFather"
|
||||
},
|
||||
"BIN_CHANNEL": {
|
||||
"description": "The BIN Channel ID. Read the readme for more info about this var"
|
||||
},
|
||||
"SLEEP_THRESHOLD": {
|
||||
"description": "Floodwait Sleep timer. Read the readme for more info about this var",
|
||||
"required": false
|
||||
},
|
||||
"WORKERS": {
|
||||
"description": "No. of workers that is to be assigned. Read the readme for more info about this var",
|
||||
"required": false
|
||||
},
|
||||
"PORT": {
|
||||
"description": "Port that you want your webapp to be listened to. Read the readme for more info about this var",
|
||||
"required": false
|
||||
},
|
||||
"BIND_ADRESS": {
|
||||
"description": "Read the readme for more info about this var",
|
||||
"required": false
|
||||
},
|
||||
"FQDN": {
|
||||
"description": "Read the readme for more info about this var",
|
||||
"required": false
|
||||
}
|
||||
},
|
||||
"buildpacks": [{
|
||||
"url": "heroku/python"
|
||||
}],
|
||||
"formation": {
|
||||
"worker": {
|
||||
"quantity": 1,
|
||||
"size": "free"
|
||||
}
|
||||
}
|
||||
}
|
||||
4
requirements.txt
Normal file
4
requirements.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
pyrogram
|
||||
tgcrypto
|
||||
aiohttp
|
||||
python-dotenv
|
||||
Reference in New Issue
Block a user