- 新增 `/status` 指令,展示机器人运行状态和系统指标 - 实现Redis Lua脚本支持原子化计数器操作 - 添加消息收发统计功能 - 完善文档,包括插件开发和性能优化指南 - 重构WebSocket连接池,增加健康检查机制 - 移除旧版编译脚本,优化项目结构
3.1 KiB
3.1 KiB
插件详解:/status 状态监控
/status 是 NeoBot 内置的一个强大插件,它能让你实时了解机器人的运行状态、性能指标和指令调用情况。这不仅是一个酷炫的功能,更是一个重要的运维工具。
功能概览
发送 /status 指令后,机器人会返回一张精心设计的状态图,包含以下核心信息:
-
系统信息:
- CPU 使用率: 当前服务器的 CPU 负载情况。
- 内存占用: 机器人进程占用了多少物理内存。
- 磁盘空间: 服务器磁盘的使用情况。
-
机器人核心指标:
- 启动时间: 机器人本次运行了多久。
- 连接状态: 与 OneBot 客户端的连接是否正常。
- 消息收发: 接收和发送了多少条消息。
-
指令调用统计:
- 总调用次数: 所有指令一共被调用了多少次。
- 热门指令: 哪些指令被使用的频率最高。
-
版本信息:
- 框架版本:
NeoBot的版本号。 - 客户端信息: 连接的 OneBot 客户端名称和版本(如 NapCatQQ)。
- 框架版本:
实现技术
这个插件综合运用了 NeoBot 框架的多种核心能力:
- 系统监控 (
psutil): 通过psutil库获取实时的系统性能数据。 - 原子化统计 (
Redis + Lua): 指令调用次数通过 Redis 的 Lua 脚本进行原子化递增,保证高并发下的数据准确性。 - 异步任务: 启动时间、消息计数等信息在后台通过异步任务持续更新。
- 动态 HTML 渲染 (
Jinja2): 状态信息被注入到一个 HTML 模板中。 - 网页截图 (
Playwright): 渲染好的 HTML 页面通过 Playwright 的页面池进行截图,生成最终的状态图片。
如何使用
直接在与机器人聊天的任何地方(私聊或群聊)发送:
/status
机器人会处理几秒钟(主要是截图耗时),然后将状态图片发送给你。
自定义与扩展
想在状态图中添加你自己的信息?很简单!
- 找到插件文件:
plugins/bot_status.py。 - 修改
get_bot_status函数: 这个函数负责收集所有需要展示的数据。你可以在这里添加新的数据源。# plugins/bot_status.py async def get_bot_status() -> Dict[str, Any]: # ... 已有的代码 ... # 添加你自己的数据 my_plugin_data = { "custom_metric": await get_my_metric(), "plugin_version": "1.2.3" } status_data.update(my_plugin_data) return status_data - 修改 HTML 模板:
templates/status.html。 在这个文件中,你可以用 Jinja2 的语法把你刚刚添加的数据展示出来。<!-- templates/status.html --> <!-- ... 已有的代码 ... --> <div class="card"> <h2>我的插件状态</h2> <p>自定义指标: {{ custom_metric }}</p> <p>插件版本: {{ plugin_version }}</p> </div>
通过这种方式,你可以轻松地将 /status 打造成一个专属于你的、功能更加丰富的机器人仪表盘。