import os from dataclasses import dataclass def _require_int(name: str) -> int: val = os.environ.get(name) if not val: raise RuntimeError(f"Env var {name} is required") return int(val) def _require_str(name: str) -> str: val = os.environ.get(name) if not val: raise RuntimeError(f"Env var {name} is required") return val @dataclass(frozen=True) class Settings: api_id: int api_hash: str phone_number: str session_name: str sessions_dir: str # Цель звонка по умолчанию: @username или numeric user id — прямой p2p звонок. call_target: str call_ring_timeout: int tts_lang: str api_token: str | None def load_settings() -> Settings: return Settings( api_id=_require_int("API_ID"), api_hash=_require_str("API_HASH"), phone_number=_require_str("PHONE_NUMBER"), session_name=os.environ.get("SESSION_NAME", "caller"), sessions_dir=os.environ.get("SESSIONS_DIR", "/data/sessions"), call_target=_require_str("CALL_TARGET"), call_ring_timeout=int(os.environ.get("CALL_RING_TIMEOUT", "45")), tts_lang=os.environ.get("TTS_LANG", "ru"), api_token=os.environ.get("API_TOKEN") or None, ) settings = load_settings()