diff --git a/.env.example b/.env.example index e4a38e8..fca8607 100644 --- a/.env.example +++ b/.env.example @@ -24,6 +24,7 @@ domain = "openmax.su" avatar_base_url = "http://127.0.0.1/avatar/" telegram_bot_token = "123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ" telegram_bot_enabled = "1" +telegram_whitelist_enabled = "1" telegram_whitelist_ids = "1,2,3" origins="http://127.0.0.1,https://web.openmax.su" sms_gateway_url = "http://127.0.0.1:8100/sms-gateway" diff --git a/src/common/config.py b/src/common/config.py index 2c5d9f2..bfa09b5 100644 --- a/src/common/config.py +++ b/src/common/config.py @@ -45,6 +45,7 @@ class ServerConfig: telegram_bot_token = os.getenv("telegram_bot_token") or "123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ" telegram_bot_enabled = bool(os.getenv("telegram_bot_enabled")) or True telegram_whitelist_ids = [x.strip() for x in os.getenv("telegram_whitelist_ids", "").split(",") if x.strip()] + telegram_whitelist_enabled = bool(os.getenv("telegram_whitelist_enabled")) or True ### origins origins = [x.strip() for x in os.getenv("origins", "").split(",") if x.strip()] if os.getenv("origins") else None diff --git a/src/telegrambot/bot.py b/src/telegrambot/bot.py index 78b44d3..ca6db32 100644 --- a/src/telegrambot/bot.py +++ b/src/telegrambot/bot.py @@ -14,7 +14,7 @@ from common.tools import Tools class TelegramBot: - def __init__(self, token, enabled, db_pool, whitelist_ids=None): + def __init__(self, token, enabled, db_pool, whitelist_ids=None, whitelist_enabled=False): self.bot = Bot(token=token) self.dp = Dispatcher() self.router = Router() @@ -23,6 +23,7 @@ class TelegramBot: self.enabled = enabled self.db_pool = db_pool self.whitelist_ids = whitelist_ids if whitelist_ids is not None else [] + self.whitelist_enabled = whitelist_enabled self.logger = logging.getLogger(__name__) self.msg_types = Static().BotMessageTypes() @@ -59,12 +60,13 @@ class TelegramBot: async def handle_register(self, message: Message): tg_id = str(message.from_user.id) - # Проверка ID на наличие в белом списке - if self.whitelist_ids and tg_id not in self.whitelist_ids: - await message.answer( - self.get_bot_message(self.msg_types.ID_NOT_WHITELISTED) - ) - return + # Проверка ID на наличие в белом списке (если он включен, конечно) + if self.whitelist_enabled: + if self.whitelist_ids and tg_id not in self.whitelist_ids: + await message.answer( + self.get_bot_message(self.msg_types.ID_NOT_WHITELISTED) + ) + return async with self.db_pool.acquire() as conn: async with conn.cursor() as cursor: diff --git a/src/telegrambot/controller.py b/src/telegrambot/controller.py index c459b0c..e3c6435 100644 --- a/src/telegrambot/controller.py +++ b/src/telegrambot/controller.py @@ -19,7 +19,8 @@ class TelegramBotController(ControllerBase): token=self.config.telegram_bot_token, enabled=self.config.telegram_bot_enabled, db_pool=api['db'], - whitelist_ids=self.config.telegram_whitelist_ids + whitelist_ids=self.config.telegram_whitelist_ids, + whitelist_enabled=self.config.telegram_whitelist_enabled, ) return _start_all()