123
This commit is contained in:
52
session_bot/config.py
Normal file
52
session_bot/config.py
Normal file
@@ -0,0 +1,52 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import os
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
|
||||
from dotenv import load_dotenv
|
||||
|
||||
|
||||
@dataclass(slots=True)
|
||||
class BotSettings:
|
||||
bot_token: str
|
||||
channel_id: int
|
||||
channel_message_id: int
|
||||
config_path: Path
|
||||
state_path: Path
|
||||
admin_ids: set[int]
|
||||
|
||||
|
||||
def _parse_admin_ids(value: str) -> set[int]:
|
||||
ids = set()
|
||||
for chunk in value.split(","):
|
||||
chunk = chunk.strip()
|
||||
if chunk:
|
||||
ids.add(int(chunk))
|
||||
return ids
|
||||
|
||||
|
||||
def load_settings() -> BotSettings:
|
||||
load_dotenv()
|
||||
|
||||
bot_token = os.environ["BOT_TOKEN"]
|
||||
channel_id = int(os.environ["CHANNEL_ID"])
|
||||
channel_message_id = int(os.environ["CHANNEL_MESSAGE_ID"])
|
||||
config_path = Path(os.environ.get("CONFIG_PATH", "config/actors.json"))
|
||||
state_path = Path(os.environ.get("STATE_PATH", "data/state.json"))
|
||||
admin_ids = _parse_admin_ids(os.environ.get("ADMIN_IDS", ""))
|
||||
|
||||
return BotSettings(
|
||||
bot_token=bot_token,
|
||||
channel_id=channel_id,
|
||||
channel_message_id=channel_message_id,
|
||||
config_path=config_path,
|
||||
state_path=state_path,
|
||||
admin_ids=admin_ids,
|
||||
)
|
||||
|
||||
|
||||
def load_actor_config(path: Path) -> dict:
|
||||
with path.open("r", encoding="utf-8") as file:
|
||||
return json.load(file)
|
||||
Reference in New Issue
Block a user