Files
dakiny-bot/DakinySettings.py
T
2024-09-03 14:37:06 -04:00

68 lines
1.5 KiB
Python

"""File contains classes defining Dakiny settings structure."""
from dataclasses import dataclass
from dataclass_wizard import YAMLWizard
CONFIG_LOCATION = "conf/config.yaml"
@dataclass
class Settings:
"""Class defines settings editable by Clan Council."""
admin_channel_id: int # might want to rename this...
announcement_category_id: int
clan_council_elect_role_id: int
clan_council_role_id: int
clan_info_channel_id: int
clan_member_role_id: int
event_host_points: int
event_host_role_id: int
event_participate_points: int
event_points_weekly_limit: int
event_post_channel_id: int
general_channel_id: int
high_council_role_id: int
voting_parent_id: int
@dataclass
class Params:
"""Class defines start parameters that shouldn't be changed."""
discord_token: str
git_branch: str
guild_id: int
@dataclass
class Election:
"""Class defines relevant election dates."""
name: str
election_start: str
highcouncil_election_announce: str
highcouncil_election_end: str
highcouncil_election_start: str
term_end: str
term_start: str
voting_end: str
voting_start: str
@dataclass
class DakinySettings(YAMLWizard):
"""Class defines all configs required for Dakiny Bot."""
election_cycles: list[Election]
params: Params
settings: Settings
def save(self) -> None:
"""Saves settings to the yaml file."""
self.to_yaml_file(CONFIG_LOCATION)
settings = DakinySettings.from_yaml_file(CONFIG_LOCATION)