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 )