From 01a7c65771039cac6a7cc5059ce676e8ea21c944 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 29 Jul 2026 16:37:58 +0500 Subject: [PATCH] feat(config): add Config class for env loading --- config.py | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 config.py diff --git a/config.py b/config.py new file mode 100644 index 0000000..d1c9a27 --- /dev/null +++ b/config.py @@ -0,0 +1,69 @@ +import os +import logging + +from typing import Any +from dotenv import load_dotenv + +logger = logging.getLogger(__name__) + + +class Config: + def __init__(self): + self._config_data = self._load() + logger.success("Конфигурация успешно загружена.") + + def _load(self): + load_dotenv() + + try: + # Pyrogram + api_id = os.getenv(key="API_ID", default=None) + api_hash = os.getenv(key="API_HASH", default=None) + + # Lolz + lolz_token = os.getenv(key="LOLZ_TOKEN", defualt=None) + lolz_thread_id = int(os.getenv(key="LOLZ_THREAD_ID", defualt=None)) + + # Stars + stars_count = int(os.getenv(key="STARS_COUNT", defualt=1)) + + # Misc + check_interval = max( + int(os.getenv(key="CHECK_INTERVAL", defualt=30)), 0.2 + ) # 300r/60s для GET запросов, 60/300 = минимум + api_delay = max( + int(os.getenv(key="API_DELAY", defualt=5)), 2 + ) # 30r/60s для non-GET запросов, 60/30 = минимум + max_retries = int(os.getenv(key="MAX_RETRIES", defualt=3)) + + enable_reply = ( + os.getenv(key="ENABLE_REPLY", default="true") + ).lower() == "true" + skip_commented = ( + os.getenv(key="SKIP_COMMENTED", default="true") + ).lower() == "true" + + return { + # Pyrogram + "api_id": api_id, + "api_hash": api_hash, + # Lolz + "lolz_token": lolz_token, + "lolz_thread_id": lolz_thread_id, + # Stars + "stars_count": stars_count, + # Misc + "check_interval": check_interval, + "api_delay": api_delay, + "max_retries": max_retries, + "enable_reply": enable_reply, + "skip_commented": skip_commented, + } + + except: + raise + + def __getattr__(self, name: str) -> Any: + return self._config_data.get( + name, True if name == "skip_posts_with_comments" else None + )