* 滚木 * feat: 重构核心架构,增强类型安全与插件管理 本次提交对核心模块进行了深度重构,引入 Pydantic 增强配置管理的类型安全性,并全面优化了插件管理系统。 主要变更详情: 1. 核心架构与配置 - 重构配置加载模块:引入 Pydantic 模型 (`core/config_models.py`),提供严格的配置项类型检查、验证及默认值管理。 - 统一模块结构:规范化模块导入路径,移除冗余的 `__init__.py` 文件,提升项目结构的清晰度。 - 性能优化:集成 Redis 缓存支持 (`RedisManager`),有效降低高频 API 调用开销,提升响应速度。 2. 插件系统升级 - 实现热重载机制:新增插件文件变更监听功能,支持开发过程中自动重载插件,提升开发效率。 - 优化生命周期管理:改进插件加载与卸载逻辑,支持精确卸载指定插件及其关联的命令、事件处理器和定时任务。 3. 功能特性增强 - 新增媒体 API:引入 `MediaAPI` 模块,封装图片、语音等富媒体资源的获取与处理接口。 - 完善权限体系:重构权限管理系统,实现管理员与操作员的分级控制,支持更细粒度的命令权限校验。 4. 代码质量与稳定性 - 全面类型修复:解决 `mypy` 静态类型检查发现的大量类型错误(包括 `CommandManager`、`EventFactory` 及 `Bot` API 签名不匹配问题)。 - 增强错误处理:优化消息处理管道的异常捕获机制,完善关键路径的日志记录,提升系统运行稳定性。 * feat: 添加测试用例并优化代码结构 refactor(permission_manager): 调整初始化顺序和逻辑 fix(admin_manager): 修复初始化逻辑和目录创建问题 feat(ws): 优化Bot实例初始化条件 feat(message): 增强MessageSegment功能并添加测试 feat(events): 支持字符串格式的消息解析 test: 添加核心功能测试用例 refactor(plugin_manager): 改进插件路径处理 style: 清理无用导入和代码 chore: 更新依赖项 * refactor(handler): 移除TYPE_CHECKING并直接导入Bot类 简化类型注解,直接导入Bot类而非使用TYPE_CHECKING条件导入,提高代码可读性和维护性 * fix(command_manager): 修复插件卸载时元信息移除不精确的问题 修复 CommandManager 中 unload_plugin 方法移除插件元信息时使用 startswith 导致可能误删其他插件的问题,改为精确匹配 同时调整相关测试用例验证精确匹配行为 * refactor: 清理未使用的导入和更新文档结构 docs: 添加config_models.py到项目结构文档 docs: 调整数据目录位置到core/data下 docs: 更新权限管理器文档描述 * 文档更新 * 更新thpic插件 支持一次返回多张图 --------- Co-authored-by: baby20162016 <2185823427@qq.com>
71 lines
4.0 KiB
Markdown
71 lines
4.0 KiB
Markdown
# 项目结构解析
|
||
|
||
理解 NEO Bot Framework 的项目结构是高效开发的第一步。本节将详细介绍每个主要目录和文件的用途。
|
||
|
||
```
|
||
.
|
||
├── core/ # 框架核心代码
|
||
│ ├── api/ # OneBot v11 API 的 Mixin 封装
|
||
│ ├── data/ # 核心模块的数据存储 (admin, permissions)
|
||
│ ├── handlers/ # 底层事件处理器 (message, notice, request)
|
||
│ ├── managers/ # 核心单例管理器 (command, permission, etc.)
|
||
│ ├── utils/ # 通用工具 (logger, singleton, etc.)
|
||
│ ├── bot.py # Bot 核心类,提供 API 调用接口
|
||
│ ├── config_loader.py # TOML 配置文件加载器
|
||
│ └── ws.py # WebSocket 底层通信模块
|
||
├── docs/ # 开发文档
|
||
├── html/ # 静态网页文件 (用于 Web 仪表盘等)
|
||
├── models/ # 数据模型 (事件, 消息段)
|
||
│ ├── events/ # OneBot v11 事件的 Python 对象封装
|
||
│ ├── message.py # 消息段 (MessageSegment) 的定义
|
||
│ └── ...
|
||
├── plugins/ # 功能插件目录
|
||
├── venv/ # Python 虚拟环境 (推荐)
|
||
├── .gitignore # Git 忽略文件配置
|
||
├── config.toml # 主配置文件
|
||
├── main.py # 项目启动入口
|
||
└── requirements.txt # Python 依赖列表
|
||
```
|
||
|
||
## 顶层目录
|
||
|
||
### `core/`
|
||
|
||
这是框架的心脏,包含了所有核心逻辑。**通常情况下,您不需要修改此目录下的代码**,只需了解其工作原理即可。
|
||
|
||
* `api/`: 将 OneBot v11 的 API 按功能(如 `message`, `group`)拆分为多个 `Mixin` 类,最终由 `bot.py` 继承,提供了清晰的 API 结构。
|
||
* `data/`: 存放核心模块所需的数据文件,例如 `admin.json` 和 `permissions.json`。
|
||
* `handlers/`: 定义了最底层的事件处理器,如 `MessageHandler`,负责从 `ws.py` 接收原始事件并进行初步处理和分发。
|
||
* `managers/`: 包含一系列全局单例管理器,是框架功能的核心实现。例如,`CommandManager` 负责指令注册与匹配,`PermissionManager` 负责权限控制。
|
||
* `utils/`: 提供被广泛使用的工具类,如 `logger` (日志)、`singleton` (单例模式基类)。
|
||
* `bot.py`: 定义了 `Bot` 类,这是插件开发者最常与之交互的对象,用于调用所有 OneBot API。
|
||
* `config_loader.py`: 负责解析 `config.toml` 文件,并提供一个全局的 `global_config` 对象。
|
||
* `config_models.py`: 使用 Pydantic 定义了配置文件的结构和类型验证。
|
||
* `ws.py`: 实现了与 OneBot v11 实现端的 WebSocket 连接、心跳、重连和消息收发。
|
||
|
||
### `docs/`
|
||
|
||
存放项目的所有开发文档。
|
||
|
||
### `html/`
|
||
|
||
用于存放未来 Web 仪表盘或其他 Web 功能所需的静态资源(HTML, CSS, JavaScript)。
|
||
|
||
### `models/`
|
||
|
||
定义了将 OneBot v11 的 JSON 数据转换为易于使用的 Python 对象。
|
||
|
||
* `events/`: 将所有上报的事件(如 `MessageEvent`, `GroupIncreaseNoticeEvent`)封装为带有类型提示的类。
|
||
* `message.py`: 提供了 `MessageSegment` 类,用于构建复杂的消息内容(如 @某人、发送图片)。
|
||
|
||
### `plugins/`
|
||
|
||
这是**插件开发者最关心的目录**。所有机器人的功能都以独立的 `.py` 文件形式存放在这里。框架会自动加载此目录下的所有插件,并支持热重载。
|
||
|
||
## 顶层文件
|
||
|
||
* `.gitignore`: 配置 Git 应忽略的文件和目录,如 `__pycache__`、`venv` 等。
|
||
* `config.toml`: 项目的主配置文件,用于设置机器人、数据库、API 等所有可变参数。
|
||
* `main.py`: 项目的启动入口脚本。它负责初始化日志、加载插件、启动 WebSocket 连接和文件监控(用于热重载)。
|
||
* `requirements.txt`: 列出了项目运行所需的所有 Python 第三方库及其版本。
|