feat: 添加测试用例并优化代码结构

refactor(permission_manager): 调整初始化顺序和逻辑
fix(admin_manager): 修复初始化逻辑和目录创建问题
feat(ws): 优化Bot实例初始化条件
feat(message): 增强MessageSegment功能并添加测试
feat(events): 支持字符串格式的消息解析
test: 添加核心功能测试用例
refactor(plugin_manager): 改进插件路径处理
style: 清理无用导入和代码
chore: 更新依赖项
This commit is contained in:
2026-01-09 00:20:30 +08:00
parent 5d07a84283
commit 77348113e3
18 changed files with 754 additions and 73 deletions

View File

@@ -26,8 +26,7 @@ class AdminManager(Singleton):
"""
初始化 AdminManager
"""
super().__init__()
if not self._initialized:
if hasattr(self, '_initialized') and self._initialized:
return
# 管理员数据文件路径
@@ -39,7 +38,12 @@ class AdminManager(Singleton):
)
self._admins: Set[int] = set()
# 确保数据目录存在
os.makedirs(os.path.dirname(self.data_file), exist_ok=True)
logger.info("管理员管理器初始化完成")
super().__init__()
async def initialize(self):
"""

View File

@@ -41,7 +41,6 @@ class PermissionManager(Singleton):
如果已经初始化过,则直接返回。
"""
super().__init__()
if hasattr(self, '_initialized') and self._initialized:
return
@@ -64,7 +63,7 @@ class PermissionManager(Singleton):
self.load()
logger.info("权限管理器初始化完成")
self._initialized = True
super().__init__()
def load(self) -> None:
"""

View File

@@ -30,12 +30,21 @@ class PluginManager:
"""
扫描并加载 `plugins` 目录下的所有插件。
"""
plugin_dir = os.path.join(
os.path.dirname(os.path.abspath(__file__)), "..", "..", "plugins"
)
# 使用 pathlib 获取更可靠的路径
# 当前文件: core/managers/plugin_manager.py
# 目标: plugins/
current_dir = os.path.dirname(os.path.abspath(__file__))
# 回退两级到项目根目录 (core/managers -> core -> root)
root_dir = os.path.dirname(os.path.dirname(current_dir))
plugin_dir = os.path.join(root_dir, "plugins")
package_name = "plugins"
logger.info(f"正在从 {package_name} 加载插件...")
if not os.path.exists(plugin_dir):
logger.error(f"插件目录不存在: {plugin_dir}")
return
logger.info(f"正在从 {package_name} 加载插件 (路径: {plugin_dir})...")
for _, module_name, is_pkg in pkgutil.iter_modules([plugin_dir]):
full_module_name = f"{package_name}.{module_name}"