changed from creating new settings instance into using a shared one

This commit is contained in:
ctih1 2025-07-23 15:42:13 +03:00
parent 7e21a10dde
commit ade9d88086
18 changed files with 252 additions and 43 deletions

View file

@ -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"

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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()

View file

@ -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")