The bot will attempt to keep producing groups with entirely unique matches based on the full history of matches until it can't. It'll then step forward and ignore a week of history and try again, ignoring more history until no history is left
38 lines
849 B
Python
38 lines
849 B
Python
"""Very simple config loading library"""
|
|
from schema import Schema, And, Use
|
|
import files
|
|
|
|
_FILE = "config.json"
|
|
_SCHEMA = Schema(
|
|
{
|
|
# Discord bot token
|
|
"token": And(Use(str)),
|
|
|
|
# ids of owners authorised to use owner-only commands
|
|
"owners": And(Use(list[int])),
|
|
}
|
|
)
|
|
|
|
|
|
class Config():
|
|
def __init__(self, data: dict):
|
|
"""Initialise and validate the config"""
|
|
_SCHEMA.validate(data)
|
|
self.__dict__ = data
|
|
|
|
@property
|
|
def token(self) -> str:
|
|
return self.__dict__["token"]
|
|
|
|
@property
|
|
def owners(self) -> list[int]:
|
|
return self.__dict__["owners"]
|
|
|
|
def reload(self) -> None:
|
|
"""Reload the config back into the dict"""
|
|
self.__dict__ = load().__dict__
|
|
|
|
|
|
def load() -> Config:
|
|
"""Load the config"""
|
|
return Config(files.load(_FILE))
|