mirror of
https://github.com/migatu/conjurer.git
synced 2026-07-18 15:52:10 +00:00
56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
"""Ł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"),
|
|
)
|