Giter Club home page Giter Club logo

tg-filestreambot's Introduction

StandWithUkraineBanner

Telegram File Stream Bot

Cover Image

A Telegram bot to stream files to web
Demo Bot »
Report a Bug | Request Feature


Table of Contents
  1. About this Bot
  2. How to make your own
  3. Setting up things
  4. How to use the bot
  5. Contributing
  6. Contact me
  7. Credits

About This Bot

Telegram Logo

This bot will give you stream links for Telegram files without the need of waiting till the download completes

Original Repository

The main working part was taken from Megatron and thanks to eyaadh for his awesome project.

How to make your own

Either you could locally host or deploy on Heroku Free tier is dead.

Deploy on Heroku

Press the below button to fast deploy to Heroku

Deploy To Heroku

then goto the variables tab for more info on setting up environmental variables.

Host it on VPS or Locally

git clone https://github.com/EverythingSuckz/TG-FileStreamBot
cd TG-FileStreamBot
python3 -m venv ./venv
. ./venv/bin/activate
pip3 install -r requirements.txt
python3 -m WebStreamer

and to stop the whole bot, do CTRL+C

If you wanna run this bot 24/7 on the VPS, follow thesesteps.

sudo apt install tmux -y
tmux
python3 -m WebStreamer

now you can close the VPS and the bot will run on it.

Deploy using Docker

First clone the repository

git clone https://github.com/EverythingSuckz/TG-FileStreamBot
cd TG-FileStreamBot

then build the docker image

docker build . -t stream-bot

now create the .env file with your variables. and start your container:

docker run -d --restart unless-stopped --name fsb \
-v /PATH/TO/.env:/app/.env \
-p 8000:8000 \
stream-bot

your PORT variable has to be consistent with the container's exposed port since it's used for URL generation. so remember if you changed the PORT variable your docker run command changes too. (example: PORT=9000 -> -p 9000:9000)

if you need to change the variables in .env file after your bot was already started, all you need to do is restart the container for the bot settings to get updated:

docker restart fsb

Deploy using docker-compose

First install docker-compose. For debian based, run

sudo apt install docker-compose -y

Afterwards, clone the repository

git clone https://github.com/EverythingSuckz/TG-FileStreamBot
cd TG-FileStreamBot

No need to create .env file, just edit the variables in the docker-compose.yml

Now run the compose file

sudo docker compose up -d

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:

API_ID=452525
API_HASH=esx576f8738x883f3sfzx83
BOT_TOKEN=55838383:yourtbottokenhere
MULTI_TOKEN1=55838383:yourfirstmulticlientbottokenhere
MULTI_TOKEN2=55838383:yoursecondmulticlientbottokenhere
MULTI_TOKEN3=55838383:yourthirdmulticlientbottokenhere
BIN_CHANNEL=-100
PORT=8080
FQDN=yourserverip
HAS_SSL=False

Mandatory Vars

API_ID : Goto my.telegram.org to obtain this.

API_HASH : Goto my.telegram.org to obtain this.

BOT_TOKEN : Get the bot token from @BotFather

BIN_CHANNEL : Create a new channel (private/public), post something in your channel. Forward that post to @missrose_bot and reply /id. Now copy paste the forwarded channel ID in this field.

For making use of Multi-Client support

What it does?
Shares the workload between other bots to avoid getting floodwaited and to make the server handle more requests. MULTI_TOKEN1: Add your first bot token here.

MULTI_TOKEN2: Add your second bot token here.

you may also add as many as bots you want. (max limit is not tested yet) MULTI_TOKEN3, MULTI_TOKEN4, etc.

Don't forget to add all these bots to the BIN_CHANNEL

Optional Vars

-HASH_LENGTH : Set custom hash length for generated urls

NOTE: Hash length should be greater than 5 and less than 64.

  • 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 address.

Defaults to 0.0.0.0

  • NO_PORT : (can be either True or False) If you don't want your port to be displayed.

You should point your PORT to 80 (http) or 443 (https) for the links to work. Ignore this if you're on Heroku.

  • FQDN : A Fully Qualified Domain Name if present.

Defaults to WEB_SERVER_BIND_ADDRESS

  • HAS_SSL : (can be either True or False) If you want the generated links in https format.

  • PING_INTERVAL : The time in ms you want the servers to be pinged each time to avoid sleeping (Only for Heroku).

Defaults to 1200 or 20 minutes.

How to use the bot

⚠️ Before using the bot, don't forget to add all the bots (multi-client ones too) 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.

faQ

  • How long the links will remain valid or is there any expiration time for the links generated by the bot?

The links will will be valid as longs as your bot is alive and you haven't deleted the log channel.

Contributing

Feel free to contribute to this project if you have any further ideas

Contact me

Telegram Channel Telegram Group

You can contact either via my Telegram Group or you can PM me on @EverythingSuckz

Credits

Copyright

Copyright (C) 2022 EverythingSuckz under GNU Affero General Public License.

TG-FileStreamBot is Free Software: You can use, study share and improve it at your will. Specifically you can redistribute and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

tg-filestreambot's People

Contributors

adarsh-goel avatar chankitsaini avatar danytpg avatar deekshithsh avatar everythingsuckz avatar eymarv avatar mahesh0253 avatar spechide avatar thebigbone avatar wiz64 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.