Files
tg_zayavka/bot/config.py
tikeev.k 4548a57f83 .
2026-06-01 17:38:44 +03:00

57 lines
1.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from dataclasses import dataclass
import os
@dataclass(frozen=True)
class Config:
bot_token: str
admin_telegram_ids: set[int]
admin_departments: dict[int, set[str]]
database_path: str
sla_minutes: int
def parse_admin_departments(raw: str) -> dict[int, set[str]]:
result: dict[int, set[str]] = {}
for rule in raw.split(";"):
if ":" not in rule:
continue
admin_id_raw, departments_raw = rule.split(":", 1)
admin_id_raw = admin_id_raw.strip()
if not admin_id_raw.isdigit():
continue
departments = {
department.strip()
for department in departments_raw.split(",")
if department.strip()
}
if departments:
result[int(admin_id_raw)] = departments
return result
def load_config() -> Config:
token = os.getenv("BOT_TOKEN", "").strip()
if not token:
raise RuntimeError("BOT_TOKEN is not set")
admin_ids_raw = os.getenv("ADMIN_TELEGRAM_IDS", "")
admin_ids = {
int(item.strip())
for item in admin_ids_raw.split(",")
if item.strip().isdigit()
}
admin_departments = parse_admin_departments(os.getenv("ADMIN_DEPARTMENTS", ""))
# Если для админа не задан явный список разделов — он видит ВСЕ разделы.
for admin_id in admin_ids:
admin_departments.setdefault(admin_id, set())
return Config(
bot_token=token,
admin_telegram_ids=admin_ids,
admin_departments=admin_departments,
database_path=os.getenv("DATABASE_PATH", "/app/data/tickets.db"),
sla_minutes=int(os.getenv("SLA_MINUTES", "60")),
)