from dataclasses import dataclass, asdict from datetime import datetime, timedelta from os import getenv @dataclass class _CONFIG: """ Skell for other Services Configurations """ def __hash__(self) -> dict: return asdict(self) def load_envs(self) -> object: """ Loads variables from environment. :return: """ raise NotImplementedError def __post_init__(self): self = self.load_envs() @dataclass class DiscordConf(_CONFIG): """ Stores the configuration for the Discord Bot token: str mc_url: str : Url to post on the discord embeds / messages prefix: str : Prefix for the commands description: str : Bot description to have """ token: str = None # mc_url: str = None prefix: str = "!" description: str = "Don't u dare make me fix ur twitter links." def load_envs(self): self.token = getenv("DISCORD_TOKEN") or self.token # self.mc_url = getenv("DISCORD_MC_URL") or self.mc_url self.prefix = getenv("DISCORD_PREFIX") or self.prefix self.description = getenv("DISCORD_DESCRIPTION") or self.description return self