48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
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()
|