From d6d27523414508a499d3de2d9b6eb6996c962282 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 7 Aug 2026 09:04:16 +0500 Subject: [PATCH] feat(config): add auto bump and captcha options --- config.py | 33 ++++++++++++++++++++++++++++++++- modules/stars_bot.py | 6 +++++- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/config.py b/config.py index e2bcd6d..2f27473 100644 --- a/config.py +++ b/config.py @@ -9,6 +9,7 @@ logger = logging.getLogger(__name__) class ConfigError(Exception): """Ошибка валидации конфигурации""" + pass @@ -46,6 +47,22 @@ class Config: except FileNotFoundError: return default_replies + def _load_captcha(self, file_path: str = "storage/captcha.txt"): + default_captcha = ( + f"[CENTER][B]Напишите ответ:[/B]\n" + f"сколько будет 20 + 20? [I][COLOR=rgb(80, 80, 78)](Капча меняется раз в месяц)[/COLOR][/I][/CENTER]" + ) + + try: + captcha = "" + with open(file_path, "r", encoding="utf-8") as replies: + captcha = replies.read() + + return captcha if captcha else default_captcha + + except FileNotFoundError: + return default_captcha + def _load(self): load_dotenv() @@ -76,7 +93,9 @@ class Config: try: lolz_thread_id = int(lolz_thread_id_str) except (ValueError, TypeError) as e: - raise ConfigError(f"LOLZ_THREAD_ID должен быть целым числом: {lolz_thread_id_str}") from e + raise ConfigError( + f"LOLZ_THREAD_ID должен быть целым числом: {lolz_thread_id_str}" + ) from e # Stars stars_count = int(os.getenv(key="STARS_COUNT", default=1)) @@ -100,10 +119,18 @@ class Config: os.getenv(key="SKIP_COMMENTED", default="true") ).lower() == "true" + enable_auto_bump = ( + os.getenv(key="ENABLE_AUTO_BUMP", default="true") + ).lower() == "true" bump_check_interval = max( float(os.getenv(key="BUMP_CHECK_INTERVAL", default=3600)), 3600 ) # 1 поднятие/3600с (1ч) = минимум + enable_captcha = ( + os.getenv(key="ENABLE_CAPTCHA", default="true") + ).lower() == "true" + captcha_answer = os.getenv(key="CAPTCHA_ANSWER", default=None) + return { # Pyrogram "api_id": api_id, @@ -127,7 +154,11 @@ class Config: "max_retries": max_retries, "default_choice": default_choice, # Bump + "enable_auto_bump": enable_auto_bump, "bump_check_interval": bump_check_interval, + # Captcha + "enable_captcha": enable_captcha, + "captcha_answer": captcha_answer, } except ConfigError: diff --git a/modules/stars_bot.py b/modules/stars_bot.py index 242c67a..44295cf 100644 --- a/modules/stars_bot.py +++ b/modules/stars_bot.py @@ -379,7 +379,11 @@ class TelegramStarsBot: # _main_loop - Основной цикл для остлеживания темы # _bump_loop - Цикл для авто-поднятия темы - await asyncio.gather(self._main_loop(), self._bump_loop()) + + if self.config.enable_auto_bump: + await asyncio.gather(self._main_loop(), self._bump_loop()) + else: + await self._main_loop() except Exception as e: logger.error(f"Ошибка в главном процессе бота: {e}")