changed from creating new settings instance into using a shared one
This commit is contained in:
parent
7e21a10dde
commit
ade9d88086
18 changed files with 252 additions and 43 deletions
|
@ -1,5 +1,6 @@
|
|||
import os
|
||||
import platform
|
||||
from typing import Callable, List
|
||||
from dotenv import load_dotenv
|
||||
import pathlib
|
||||
import subprocess
|
||||
|
@ -22,6 +23,10 @@ def get_git_branch():
|
|||
env_path = pathlib.Path(__file__).parent.parent / ".env"
|
||||
load_dotenv(dotenv_path=env_path)
|
||||
|
||||
available_cogs: Callable[[], List[str]] = lambda: [
|
||||
file[:-3] for file in os.listdir("assets/cogs") if file.endswith(".py")
|
||||
]
|
||||
|
||||
ANSI = "\033["
|
||||
RED = f"{ANSI}31m"
|
||||
GREEN = f"{ANSI}32m"
|
||||
|
|
|
@ -5,9 +5,8 @@ import pickle
|
|||
from modules.globalvars import *
|
||||
import logging
|
||||
import modules.keys as k
|
||||
from modules.settings import Settings as SettingsManager
|
||||
from modules.settings import instance as settings_manager
|
||||
|
||||
settings_manager = SettingsManager()
|
||||
settings = settings_manager.settings
|
||||
|
||||
|
||||
|
|
|
@ -4,12 +4,11 @@ import discord
|
|||
import discord.ext
|
||||
import discord.ext.commands
|
||||
|
||||
from modules.settings import Settings as SettingsManager
|
||||
from modules.settings import instance as settings_manager
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger("goober")
|
||||
|
||||
settings_manager = SettingsManager()
|
||||
settings = settings_manager.settings
|
||||
|
||||
|
||||
|
|
|
@ -11,9 +11,8 @@ from spacy.util import is_package
|
|||
import importlib.metadata
|
||||
import logging
|
||||
import modules.keys as k
|
||||
from modules.settings import Settings as SettingsManager
|
||||
from modules.settings import instance as settings_manager
|
||||
|
||||
settings_manager = SettingsManager()
|
||||
settings = settings_manager.settings
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import json
|
||||
import os
|
||||
from typing import List, Mapping, Any, TypedDict
|
||||
from typing import List, Literal, Mapping, Any, NotRequired, TypedDict
|
||||
from modules.keys import Language
|
||||
import logging
|
||||
import copy
|
||||
|
@ -36,8 +36,19 @@ class SettingsType(TypedDict):
|
|||
splash_text_loc: str
|
||||
|
||||
|
||||
class AdminLogEvent(TypedDict):
|
||||
messageId: int
|
||||
author: int
|
||||
target: str | int
|
||||
action: Literal["del", "add", "set"]
|
||||
change: Literal["owner_ids", "blacklisted_users", "enabled_cogs"]
|
||||
|
||||
|
||||
class Settings:
|
||||
def __init__(self) -> None:
|
||||
global instance
|
||||
instance = self
|
||||
|
||||
self.path: str = os.path.join(".", "settings", "settings.json")
|
||||
|
||||
if not os.path.exists(self.path):
|
||||
|
@ -52,11 +63,37 @@ class Settings:
|
|||
self.settings = SettingsType(self.__kv_store) # type: ignore
|
||||
self.original_settings = copy.deepcopy(self.settings)
|
||||
|
||||
self.log_path: str = os.path.join(".", "settings", "admin_logs.json")
|
||||
|
||||
def reload_settings(self) -> None:
|
||||
with open(self.path, "r") as f:
|
||||
self.__kv_store: dict = json.load(f)
|
||||
|
||||
self.settings = SettingsType(self.__kv_store) # type: ignore
|
||||
self.original_settings = copy.deepcopy(self.settings)
|
||||
|
||||
def commit(self) -> None:
|
||||
with open(self.path, "w") as f:
|
||||
json.dump(self.settings, f, indent=4)
|
||||
json.dump(self.settings, f, ensure_ascii=False, indent=4)
|
||||
|
||||
self.original_settings = self.settings
|
||||
|
||||
def discard(self) -> None:
|
||||
self.settings = self.original_settings
|
||||
|
||||
def add_admin_log_event(self, event: AdminLogEvent):
|
||||
if not os.path.exists(self.log_path):
|
||||
logger.warning("Admin log doesn't exist!")
|
||||
with open(self.log_path, "w") as f:
|
||||
json.dump([], f)
|
||||
|
||||
with open(self.log_path, "r") as f:
|
||||
logs: List[AdminLogEvent] = json.load(f)
|
||||
|
||||
logs.append(event)
|
||||
|
||||
with open(self.log_path, "w") as f:
|
||||
json.dump(logs, f, ensure_ascii=False, indent=4)
|
||||
|
||||
|
||||
instance: Settings = Settings()
|
||||
|
|
|
@ -1,12 +1,11 @@
|
|||
import sys
|
||||
import traceback
|
||||
import os
|
||||
from modules.settings import Settings as SettingsManager
|
||||
from modules.settings import instance as settings_manager
|
||||
import logging
|
||||
from modules.globalvars import RED, RESET
|
||||
import modules.keys as k
|
||||
|
||||
settings_manager = SettingsManager()
|
||||
settings = settings_manager.settings
|
||||
logger = logging.getLogger("goober")
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue