added RAG, Multiuser, TG bot
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def _parse_allowed_ids(raw: str) -> frozenset[int]:
|
||||
ids: set[int] = set()
|
||||
for part in raw.split(","):
|
||||
part = part.strip()
|
||||
if not part:
|
||||
continue
|
||||
try:
|
||||
ids.add(int(part))
|
||||
except ValueError:
|
||||
continue
|
||||
return frozenset(ids)
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class Settings:
|
||||
telegram_bot_token: str
|
||||
ha_api_base_url: str
|
||||
poll_interval_sec: int
|
||||
data_dir: Path
|
||||
allowed_telegram_ids: frozenset[int]
|
||||
|
||||
@property
|
||||
def db_path(self) -> Path:
|
||||
return self.data_dir / "bot.db"
|
||||
|
||||
|
||||
def load_settings() -> Settings:
|
||||
token = os.getenv("TELEGRAM_BOT_TOKEN", "").strip()
|
||||
if not token:
|
||||
raise RuntimeError("TELEGRAM_BOT_TOKEN is required")
|
||||
|
||||
base_url = os.getenv("HA_API_BASE_URL", "").strip().rstrip("/")
|
||||
if not base_url:
|
||||
raise RuntimeError("HA_API_BASE_URL is required")
|
||||
|
||||
poll_raw = os.getenv("POLL_INTERVAL_SEC", "30").strip()
|
||||
try:
|
||||
poll_interval = max(10, int(poll_raw))
|
||||
except ValueError:
|
||||
poll_interval = 30
|
||||
|
||||
data_dir = Path(os.getenv("DATA_DIR", "./data")).resolve()
|
||||
data_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
allowed = _parse_allowed_ids(os.getenv("ALLOWED_TELEGRAM_IDS", ""))
|
||||
|
||||
return Settings(
|
||||
telegram_bot_token=token,
|
||||
ha_api_base_url=base_url,
|
||||
poll_interval_sec=poll_interval,
|
||||
data_dir=data_dir,
|
||||
allowed_telegram_ids=allowed,
|
||||
)
|
||||
Reference in New Issue
Block a user