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.info("Конфигурация успешно загружена.") def _load_replies(self, file_path: str = "storage/replies.txt"): script_ad_reply = [ o.strip() for o in str( "Скрипт для авто-раздачи :da: [ad][UNFURL]https://lolz.team/threads/10187517/[/UNFURL][/ad] || Сиськи, сливы 18+ [ad][UNFURL]https://lolz.team/threads/10187517/[/UNFURL][/ad] || Твой помощник для авто-раздачи :animeyessir: [ad][UNFURL]https://lolz.team/threads/10187517/[/UNFURL][/ad]" ).split(" || ") ] default_replies = [["✓"], script_ad_reply] try: reply_lines = [] with open(file_path, "r", encoding="utf-8") as replies: for line in replies: line = line.rstrip("\n") if not line: continue if " || " in line: options = [o.strip() for o in line.split(" || ")] else: options = [line] reply_lines.append(options) reply_lines.append(script_ad_reply) return reply_lines if reply_lines else default_replies except FileNotFoundError: return default_replies def _load(self): load_dotenv() try: # Pyrogram api_id = int(os.getenv(key="API_ID", default=2040)) api_hash = os.getenv( key="API_HASH", default="b18441a1ff607e10a989891a5462e627" ) # Notification bot (aiogram) bot_token = os.getenv(key="BOT_TOKEN", default=None) admin_id = ( os.getenv(key="ADMIN_ID", default=None) if not os.getenv(key="ADMIN_ID", default=None) else int(os.getenv(key="ADMIN_ID", default=None)) ) notify_admin = ( os.getenv(key="NOTIFY_ADMIN", default="true") ).lower() == "true" # Lolz lolz_token = os.getenv(key="LOLZ_TOKEN", default=None) lolz_thread_id = int(os.getenv(key="LOLZ_THREAD_ID", default=None)) # Stars stars_count = int(os.getenv(key="STARS_COUNT", default=1)) # Misc default_choice = int(os.getenv(key="DEFAULT_CHOICE", default=2)) start_page = max(int(os.getenv(key="START_PAGE", default=1)), 1) check_interval = max( float(os.getenv(key="CHECK_INTERVAL", default=30)), 0.2 ) # 300r/60s для GET запросов, 60/300 = минимум api_delay = max( float(os.getenv(key="API_DELAY", default=5)), 2 ) # 30r/60s для non-GET запросов, 60/30 = минимум max_retries = int(os.getenv(key="MAX_RETRIES", default=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, # Notification bot (aiogram) "bot_token": bot_token, "admin_id": admin_id, "notify_admin": notify_admin, # Lolz "lolz_token": lolz_token, "lolz_thread_id": lolz_thread_id, # Stars "stars_count": stars_count, # Misc "default_choice": default_choice, "start_page": start_page, "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 )