From f5fd0187ecf72a9eb7bfb1e3cba0d7d901f661bb Mon Sep 17 00:00:00 2001 From: root Date: Sat, 8 Aug 2026 06:26:56 +0500 Subject: [PATCH] refactor(captcha): load answer from env dynamically --- config.py | 5 +++++ modules/stars_bot.py | 11 +++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/config.py b/config.py index 97f8436..bc1f098 100644 --- a/config.py +++ b/config.py @@ -63,6 +63,11 @@ class Config: except FileNotFoundError: return default_captcha + def _load_captcha_answer(self): + """Load captcha answer from environment variable (supports live reload)""" + load_dotenv(override=True) # Reload .env file + return os.getenv(key="CAPTCHA_ANSWER", default=None) + def _load(self): load_dotenv() diff --git a/modules/stars_bot.py b/modules/stars_bot.py index c24ffd4..f1bb76d 100644 --- a/modules/stars_bot.py +++ b/modules/stars_bot.py @@ -144,14 +144,16 @@ class TelegramStarsBot: async def update_captcha(self): """Update or add captcha text in the thread spoiler block""" captcha_text = self.config._load_captcha() + captcha_answer = self.config._load_captcha_answer() + if ( not captcha_text or not self.config.enable_captcha - or not self.config.captcha_answer + or not captcha_answer ): if not self.config.enable_captcha: logger.error("Капча выключена. Редактирование темы невозможно.") - elif not self.config.captcha_answer: + elif not captcha_answer: logger.error( "Ответ для капчи не установлен. Редактирование темы невозможно." ) @@ -245,8 +247,9 @@ class TelegramStarsBot: self.processed_manager.mark_processed(post_id) return - if self.config.enable_captcha and self.config.captcha_answer: - if not str(self.config.captcha_answer) in post_content: + if self.config.enable_captcha: + captcha_answer = self.config._load_captcha_answer() + if captcha_answer and str(captcha_answer) not in post_content: logger.info(f"Пост {post_id} не содержит капчу. Пропускаю обработку.") self.processed_manager.mark_processed(post_id) return