first init
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import tomllib
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class Config:
|
||||
telegram_bot_token: str
|
||||
admin_ids: set[int]
|
||||
marzban_url: str
|
||||
marzban_username: str
|
||||
marzban_password: str
|
||||
payment_text: str
|
||||
database_path: str = "bot.sqlite3"
|
||||
|
||||
@classmethod
|
||||
def load(cls, path: str | Path) -> "Config":
|
||||
data: dict[str, Any] = tomllib.loads(Path(path).read_text(encoding="utf-8"))
|
||||
return cls(
|
||||
telegram_bot_token=str(data["telegram_bot_token"]),
|
||||
admin_ids={int(item) for item in data.get("admin_ids", [])},
|
||||
marzban_url=str(data["marzban_url"]).rstrip("/"),
|
||||
marzban_username=str(data["marzban_username"]),
|
||||
marzban_password=str(data["marzban_password"]),
|
||||
payment_text=str(data["payment_text"]),
|
||||
database_path=str(data.get("database_path", "bot.sqlite3")),
|
||||
)
|
||||
Reference in New Issue
Block a user