radical-bot/lib/config.py

35 lines
1.1 KiB
Python

import json
from pathlib import Path
from dataclasses import dataclass
@dataclass
class Config(object):
discord_token: str | None = None
discord_guild_id: int | None = None
discord_study_room_thread: int | None = None
git_branch: str | None = None
git_url: str | None = None
google_calendar_id: str | None = None
time_zone: str | None = None
def config_decoder(obj):
if '__type__' in obj and obj['__type__'] == "Config":
return Config(
discord_token=obj['discord_token'],
discord_guild_id=obj['discord_guild_id'],
discord_study_room_thread=obj['discord_study_room_thread'],
git_branch=obj['git_branch'],
git_url=obj['git_url'],
google_calendar_id=obj['google_calendar_id'],
time_zone=obj['time_zone']
)
def save_config(config: dict):
with Path("config.json").open("w+", encoding="utf-8") as fp:
json.dump(config, fp, indent=4)
def load_config():
with Path("config.json").open("r", encoding="utf-8") as fp:
config = json.load(fp, object_hook=config_decoder)
return config