"""Ładowanie konfiguracji z .env (proste i wystarczające dla jednego serwera).""" from __future__ import annotations import os from dataclasses import dataclass from dotenv import load_dotenv load_dotenv() def _req(key: str) -> str: val = os.getenv(key) if not val or val.startswith("wklej") or val.startswith("000000"): raise RuntimeError(f"Brak/placeholder w .env: {key}") return val @dataclass(frozen=True) class Config: # Discord token: str guild_id: int chan_chat: int chan_events: int gm_role_id: int # RCON rcon_host: str rcon_port: int rcon_password: str # Log log_mode: str # "local" | "sftp" log_path: str sftp_host: str | None sftp_port: int sftp_user: str | None sftp_password: str | None @staticmethod def load() -> "Config": mode = os.getenv("LOG_MODE", "local").lower() return Config( token=_req("DISCORD_TOKEN"), guild_id=int(_req("DISCORD_GUILD_ID")), chan_chat=int(_req("CHAN_CHAT")), chan_events=int(_req("CHAN_EVENTS")), gm_role_id=int(_req("GM_ROLE_ID")), rcon_host=_req("RCON_HOST"), rcon_port=int(os.getenv("RCON_PORT", "25575")), rcon_password=_req("RCON_PASSWORD"), log_mode=mode, log_path=_req("LOG_PATH"), sftp_host=os.getenv("SFTP_HOST"), sftp_port=int(os.getenv("SFTP_PORT", "22")), sftp_user=os.getenv("SFTP_USER"), sftp_password=os.getenv("SFTP_PASSWORD"), )