TG Bot: возможность включения белого списка

This commit is contained in:
Alexey Polyakov
2026-05-06 00:51:56 +03:00
parent 1ff974dfce
commit 0f2d946b98
4 changed files with 13 additions and 8 deletions

View File

@@ -24,6 +24,7 @@ domain = "openmax.su"
avatar_base_url = "http://127.0.0.1/avatar/" avatar_base_url = "http://127.0.0.1/avatar/"
telegram_bot_token = "123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ" telegram_bot_token = "123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ"
telegram_bot_enabled = "1" telegram_bot_enabled = "1"
telegram_whitelist_enabled = "1"
telegram_whitelist_ids = "1,2,3" telegram_whitelist_ids = "1,2,3"
origins="http://127.0.0.1,https://web.openmax.su" origins="http://127.0.0.1,https://web.openmax.su"
sms_gateway_url = "http://127.0.0.1:8100/sms-gateway" sms_gateway_url = "http://127.0.0.1:8100/sms-gateway"

View File

@@ -45,6 +45,7 @@ class ServerConfig:
telegram_bot_token = os.getenv("telegram_bot_token") or "123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ" telegram_bot_token = os.getenv("telegram_bot_token") or "123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ"
telegram_bot_enabled = bool(os.getenv("telegram_bot_enabled")) or True 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_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
origins = [x.strip() for x in os.getenv("origins", "").split(",") if x.strip()] if os.getenv("origins") else None origins = [x.strip() for x in os.getenv("origins", "").split(",") if x.strip()] if os.getenv("origins") else None

View File

@@ -14,7 +14,7 @@ from common.tools import Tools
class TelegramBot: 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.bot = Bot(token=token)
self.dp = Dispatcher() self.dp = Dispatcher()
self.router = Router() self.router = Router()
@@ -23,6 +23,7 @@ class TelegramBot:
self.enabled = enabled self.enabled = enabled
self.db_pool = db_pool self.db_pool = db_pool
self.whitelist_ids = whitelist_ids if whitelist_ids is not None else [] self.whitelist_ids = whitelist_ids if whitelist_ids is not None else []
self.whitelist_enabled = whitelist_enabled
self.logger = logging.getLogger(__name__) self.logger = logging.getLogger(__name__)
self.msg_types = Static().BotMessageTypes() self.msg_types = Static().BotMessageTypes()
@@ -59,7 +60,8 @@ class TelegramBot:
async def handle_register(self, message: Message): async def handle_register(self, message: Message):
tg_id = str(message.from_user.id) tg_id = str(message.from_user.id)
# Проверка ID на наличие в белом списке # Проверка ID на наличие в белом списке (если он включен, конечно)
if self.whitelist_enabled:
if self.whitelist_ids and tg_id not in self.whitelist_ids: if self.whitelist_ids and tg_id not in self.whitelist_ids:
await message.answer( await message.answer(
self.get_bot_message(self.msg_types.ID_NOT_WHITELISTED) self.get_bot_message(self.msg_types.ID_NOT_WHITELISTED)

View File

@@ -19,7 +19,8 @@ class TelegramBotController(ControllerBase):
token=self.config.telegram_bot_token, token=self.config.telegram_bot_token,
enabled=self.config.telegram_bot_enabled, enabled=self.config.telegram_bot_enabled,
db_pool=api['db'], 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() return _start_all()