mostly working idfk
This commit is contained in:
parent
b0ba03f97d
commit
4e111b410d
12 changed files with 822 additions and 291 deletions
58
modules/settings.py
Normal file
58
modules/settings.py
Normal file
|
@ -0,0 +1,58 @@
|
|||
import json
|
||||
import os
|
||||
from typing import List, TypedDict
|
||||
import copy
|
||||
|
||||
class MiscBotOptions(TypedDict):
|
||||
ping_line: str
|
||||
active_song: str
|
||||
positive_gifs: List[str]
|
||||
block_profanity: bool
|
||||
|
||||
class BotSettings(TypedDict):
|
||||
prefix: str
|
||||
owner_ids: List[int]
|
||||
blacklisted_users: List[int]
|
||||
user_training: bool
|
||||
allow_show_mem_command: bool
|
||||
react_to_messages: bool
|
||||
misc: MiscBotOptions
|
||||
enabled_cogs: List[str]
|
||||
active_memory: str
|
||||
|
||||
class SettingsType(TypedDict):
|
||||
bot: BotSettings
|
||||
locale: str
|
||||
name: str
|
||||
auto_update: bool
|
||||
disable_checks: bool
|
||||
splash_text_loc: str
|
||||
|
||||
class Settings:
|
||||
def __init__(self) -> None:
|
||||
self.path = os.path.join(".", "settings", "settings.json")
|
||||
if not os.path.exists(self.path):
|
||||
raise FileNotFoundError("settings.json file does not exist!")
|
||||
|
||||
with open(self.path, "r") as f:
|
||||
self._kv_store = json.load(f)
|
||||
|
||||
self.settings: SettingsType = self._kv_store # type: ignore
|
||||
self.original_settings = copy.deepcopy(self.settings)
|
||||
|
||||
def get_locale(self) -> str:
|
||||
# Return locale or None if missing
|
||||
return self.settings.get("locale", None)
|
||||
|
||||
def commit(self) -> None:
|
||||
with open(self.path, "w") as f:
|
||||
json.dump(self.settings, f, indent=4)
|
||||
self.original_settings = copy.deepcopy(self.settings)
|
||||
|
||||
def discard(self) -> None:
|
||||
self.settings = copy.deepcopy(self.original_settings)
|
||||
|
||||
# Usage
|
||||
instance = Settings()
|
||||
locale = instance.get_locale()
|
||||
print("Locale:", locale)
|
Loading…
Add table
Add a link
Reference in a new issue