diff --git a/README.md b/README.md
index 3df31dc..35fa39e 100644
--- a/README.md
+++ b/README.md
@@ -66,7 +66,7 @@ pip install -r requirements.txt
## 📝 Variables
-**The variables provided below should either be completed within the [config.py](https://github.com/TheCaduceus/FileStreamBot/blob/main/bot/config.py) file or configured as environment variables.**
+**The variables listed below should be defined either in [config.py](https://github.com/TheCaduceus/FileStreamBot/blob/main/bot/config.py) file or as environment variables, depending on your setup.**
* `API_ID`|`TELEGRAM_API_ID`: API ID of your Telegram account, can be obtained from [My Telegram](https://my.telegram.org). `int`
* `API_HASH`|`TELEGRAM_API_HASH`: API hash of your Telegram account, can be obtained from [My Telegram](https://my.telegram.org). `str`
* `OWNER_ID`: ID of your Telegram account, can be obtained by sending **/info** to [@DumpJsonBot](https://t.me/DumpJsonBot). `int`
@@ -74,13 +74,14 @@ pip install -r requirements.txt
* `BOT_USERNAME`|`TELEGRAM_BOT_USERNAME`: Username of your Telegram bot, create one using [@BotFather](https://t.me/BotFather). `str`
* `BOT_TOKEN`|`TELEGRAM_BOT_TOKEN`: Telegram API token of your bot, can be obtained from [@BotFather](https://t.me/BotFather). `str`
* `CHANNEL_ID`|`TELEGRAM_CHANNEL_ID`: ID of the channel where bot will forward all files received from users, can be obtained by forwarding any message from channel to [@DumpJsonBot](https://t.me/DumpJsonBot) and then looking from `forward_from_chat` key. `int`
-* `BOT_WORKERS`: Number of updates bot should process from Telegram at once, by default to 10 updates. `int`
* `SECRET_CODE_LENGTH`: Number of characters that file code should contain, by default to 24 characters. `int`
* `BASE_URL`: Base URL that bot should use while generating file links, can be FQDN and by default to `127.0.0.1`. `str`
* `BIND_ADDRESS`: Bind address for web server, by default to `0.0.0.0` to run on all possible addresses. `str`
* `PORT`: Port for web server to run on, by default to `8080`. `int`
## 🕹 Deployment
+> [!NOTE]
+> This bot is designed for personal use or to share with friends and family only. It is not intended for mass public use or exposure to a large audience.
diff --git a/bot/__init__.py b/bot/__init__.py
index 05fc31e..469b82f 100644
--- a/bot/__init__.py
+++ b/bot/__init__.py
@@ -5,15 +5,15 @@ from .config import Telegram, LOGGER_CONFIG_JSON
dictConfig(LOGGER_CONFIG_JSON)
-version = 1.7
+version = 1.8
logger = getLogger('bot')
TelegramBot = Client(
- name ='bot',
+ name = 'bot',
api_id = Telegram.API_ID,
api_hash = Telegram.API_HASH,
bot_token = Telegram.BOT_TOKEN,
plugins = {'root': 'bot/plugins'},
- workers = Telegram.BOT_WORKERS,
- max_concurrent_transmissions = 1000
+ sleep_threshold = -1,
+ max_concurrent_transmissions = 10,
)
diff --git a/bot/config.py b/bot/config.py
index 505d1f9..11bdcc7 100644
--- a/bot/config.py
+++ b/bot/config.py
@@ -7,7 +7,6 @@ class Telegram:
ALLOWED_USER_IDS = env.get("ALLOWED_USER_IDS", "").split()
BOT_USERNAME = env.get("TELEGRAM_BOT_USERNAME", "BotFather")
BOT_TOKEN = env.get("TELEGRAM_BOT_TOKEN", "1234567:xyz")
- BOT_WORKERS = env.get("BOT_WORKERS", 10)
CHANNEL_ID = int(env.get("TELEGRAM_CHANNEL_ID", -100123456789))
SECRET_CODE_LENGTH = int(env.get("SECRET_CODE_LENGTH", 24))
diff --git a/bot/modules/decorators.py b/bot/modules/decorators.py
index d065e3b..4478267 100644
--- a/bot/modules/decorators.py
+++ b/bot/modules/decorators.py
@@ -1,8 +1,9 @@
from hydrogram import Client
-from hydrogram.types import Message, CallbackQuery
+from hydrogram.types import Message, CallbackQuery, InlineKeyboardMarkup, InlineKeyboardButton
from typing import Union, Callable
from functools import wraps
from bot.config import Telegram
+from bot.modules.static import *
def verify_user(func: Callable):
@@ -12,5 +13,13 @@ def verify_user(func: Callable):
if not Telegram.ALLOWED_USER_IDS or chat_id in Telegram.ALLOWED_USER_IDS:
return await func(client, update)
+ elif isinstance(update, CallbackQuery):
+ return await update.answer(UserNotInAllowedList, show_alert=True)
+ elif isinstance(update, Message):
+ return await update.reply(
+ text = UserNotInAllowedList,
+ quote = True,
+ reply_markup = InlineKeyboardMarkup([[InlineKeyboardButton('Deploy Own', url='https://github.com/TheCaduceus/FileStreamBot')]])
+ )
return decorator
diff --git a/bot/modules/static.py b/bot/modules/static.py
index c93d720..527f684 100644
--- a/bot/modules/static.py
+++ b/bot/modules/static.py
@@ -1,11 +1,30 @@
WelcomeText = \
-"""
+"""\
Hi **%(first_name)s**, send me a file to instantly generate file links.
+
+**Commands:**
+/privacy - View bot's privacy policy.
+/log - Get bot's log file. (owner only)
+/help - Show this message.
"""
PrivacyText = \
"""
-This bot securely stores your files to deliver its service.
+**Privacy Policy**
+
+**1.Data Storage:** Files you upload/send are securely saved in the bot's private Telegram channel.
+
+**2.Download Links:** Links include a secret code to prevent unauthorized access.
+
+**3.User Control:** You can revoke links anytime using the "Revoke" button.
+
+**4.Moderation:** The bot owner can view and delete your files if necessary.
+
+**5.Open Source:** The bot is [open source](https://github.com/TheCaduceus/FileStreamBot). Deploy your own instance for maximum privacy.
+
+**6.Retention:** Files are stored until you revoke their links.
+
+__By using this bot, you agree to this policy.__
"""
FileLinksText = \
@@ -41,3 +60,8 @@ InvalidPayloadText = \
"""
Invalid payload.
"""
+
+UserNotInAllowedList = \
+"""
+You are not allowed to use this bot.
+"""
diff --git a/bot/plugins/commands.py b/bot/plugins/commands.py
index 4c76db1..1f0f3e0 100644
--- a/bot/plugins/commands.py
+++ b/bot/plugins/commands.py
@@ -1,6 +1,7 @@
from hydrogram import filters
from hydrogram.types import Message
from bot import TelegramBot
+from bot.config import Telegram
from bot.modules.static import *
from bot.modules.decorators import verify_user
@@ -8,11 +9,15 @@ from bot.modules.decorators import verify_user
@verify_user
async def start_command(_, msg: Message):
await msg.reply(
- text=WelcomeText % {'first_name': msg.from_user.first_name},
- quote=True
+ text = WelcomeText % {'first_name': msg.from_user.first_name},
+ quote = True
)
@TelegramBot.on_message(filters.command('privacy') & filters.private)
@verify_user
async def privacy_command(_, msg: Message):
- await msg.reply(text=PrivacyText, quote=True)
+ await msg.reply(text=PrivacyText, quote=True, disable_web_page_preview=True)
+
+@TelegramBot.on_message(filters.command('log') & filters.chat(Telegram.OWNER_ID))
+async def log_command(_, msg: Message):
+ await msg.reply_document('event-log.txt', quote=True)