feat: 移除冗余的配置属性访问方法,改为动态代理访问
parent
66a1c08405
commit
efd98b022f
|
|
@ -8,14 +8,6 @@ from watchdog.events import FileSystemEventHandler, FileModifiedEvent
|
||||||
|
|
||||||
from ..logger import logger
|
from ..logger import logger
|
||||||
from .config import Config, load_config
|
from .config import Config, load_config
|
||||||
from .official_configs import (
|
|
||||||
ChatConfig,
|
|
||||||
DebugConfig,
|
|
||||||
MaiBotServerConfig,
|
|
||||||
NapcatServerConfig,
|
|
||||||
NicknameConfig,
|
|
||||||
VoiceConfig,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class ConfigManager:
|
class ConfigManager:
|
||||||
|
|
@ -142,47 +134,41 @@ class ConfigManager:
|
||||||
value = getattr(value, part)
|
value = getattr(value, part)
|
||||||
return value
|
return value
|
||||||
|
|
||||||
@property
|
def __getattr__(self, name: str) -> Any:
|
||||||
def nickname(self) -> NicknameConfig:
|
"""动态代理配置属性访问
|
||||||
"""昵称配置"""
|
|
||||||
if self._config is None:
|
|
||||||
raise RuntimeError("配置尚未加载,请先调用 load() 方法")
|
|
||||||
return self._config.nickname
|
|
||||||
|
|
||||||
@property
|
支持直接访问配置对象的属性,如:
|
||||||
def chat(self) -> ChatConfig:
|
- config_manager.napcat_server
|
||||||
"""聊天配置"""
|
- config_manager.chat
|
||||||
if self._config is None:
|
- config_manager.debug
|
||||||
raise RuntimeError("配置尚未加载,请先调用 load() 方法")
|
|
||||||
return self._config.chat
|
|
||||||
|
|
||||||
@property
|
Args:
|
||||||
def voice(self) -> VoiceConfig:
|
name: 属性名
|
||||||
"""语音配置"""
|
|
||||||
if self._config is None:
|
|
||||||
raise RuntimeError("配置尚未加载,请先调用 load() 方法")
|
|
||||||
return self._config.voice
|
|
||||||
|
|
||||||
@property
|
Returns:
|
||||||
def napcat_server(self) -> NapcatServerConfig:
|
Any: 配置对象的对应属性值
|
||||||
"""NapCat服务器配置"""
|
|
||||||
if self._config is None:
|
|
||||||
raise RuntimeError("配置尚未加载,请先调用 load() 方法")
|
|
||||||
return self._config.napcat_server
|
|
||||||
|
|
||||||
@property
|
Raises:
|
||||||
def maibot_server(self) -> MaiBotServerConfig:
|
RuntimeError: 配置尚未加载
|
||||||
"""MaiBot服务器配置"""
|
AttributeError: 属性不存在
|
||||||
if self._config is None:
|
"""
|
||||||
raise RuntimeError("配置尚未加载,请先调用 load() 方法")
|
# 私有属性不代理
|
||||||
return self._config.maibot_server
|
if name.startswith('_'):
|
||||||
|
raise AttributeError(
|
||||||
|
f"'{type(self).__name__}' object has no attribute '{name}'"
|
||||||
|
)
|
||||||
|
|
||||||
@property
|
# 检查配置是否已加载
|
||||||
def debug(self) -> DebugConfig:
|
|
||||||
"""调试配置"""
|
|
||||||
if self._config is None:
|
if self._config is None:
|
||||||
raise RuntimeError("配置尚未加载,请先调用 load() 方法")
|
raise RuntimeError("配置尚未加载,请先调用 load() 方法")
|
||||||
return self._config.debug
|
|
||||||
|
# 尝试从 _config 获取属性
|
||||||
|
try:
|
||||||
|
return getattr(self._config, name)
|
||||||
|
except AttributeError as e:
|
||||||
|
raise AttributeError(
|
||||||
|
f"'{type(self).__name__}' object has no attribute '{name}'"
|
||||||
|
) from e
|
||||||
|
|
||||||
async def start_watch(self) -> None:
|
async def start_watch(self) -> None:
|
||||||
"""启动配置文件监控(需要在事件循环中调用)"""
|
"""启动配置文件监控(需要在事件循环中调用)"""
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue