treble_planet / utils /config.py
maltose1's picture
Upload 64 files
b93b587 verified
import json
CONFIG = "config.json"
class Config:
def __init__(self):
self._config = {}
self.reload()
def get(self, key: str, default=None):
"""获取配置值,支持多层级访问,如 'servers.main.chat_channels'"""
keys = key.split('.')
value = self._config
for k in keys:
if isinstance(value, dict):
value = value.get(k, default)
else:
return default
return value
def write(self, key: str, value):
"""写入配置值,支持多层级写入,如 'servers.main.chat_channels'"""
keys = key.split('.')
current = self._config
# 遍历到最后一个key之前
for k in keys[:-1]:
if k not in current:
current[k] = {}
current = current[k]
# 设置最后一个key的值
current[keys[-1]] = value
# 保存到文件
with open(CONFIG, "w", encoding="utf-8") as f:
json.dump(self._config, f, indent=4, ensure_ascii=False)
def reload(self):
with open(CONFIG, "r", encoding="utf-8") as f:
self._config = json.load(f)
def get_server_config(self, guild_id: str):
"""获取指定服务器的配置"""
for server_name, server_config in self._config.get("servers", {}).items():
if server_config.get("guild_id") == guild_id:
return server_name, server_config
return None, None
config = Config()