Files
NeoBot/docs/plugin-development/index.md
K2cr2O1 d458413e4b feat: 添加状态监控插件和Redis原子操作支持
- 新增 `/status` 指令,展示机器人运行状态和系统指标
- 实现Redis Lua脚本支持原子化计数器操作
- 添加消息收发统计功能
- 完善文档,包括插件开发和性能优化指南
- 重构WebSocket连接池,增加健康检查机制
- 移除旧版编译脚本,优化项目结构
2026-01-23 15:54:45 +08:00

81 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 插件开发入门
写插件是给 NEO Bot 添加功能的唯一方式,一个 Python 文件就是一个插件。或者一个文件夹里边有__init__.py
## 1. 创建你的第一个插件
`plugins/` 目录下,新建一个 `hello.py` 文件。
```python
# plugins/hello.py
from core.managers.command_manager import matcher
from models.events.message import MessageEvent
# __plugin_meta__ 是插件元信息,会在 /help 指令里显示
__plugin_meta__ = {
"name": "你好世界",
"description": "一个简单的示例插件",
"usage": "/hello - 发送你好"
}
# @matcher.command() 装饰器注册一个命令
# "hello" 是命令名aliases 是别名
@matcher.command("hello", aliases=["hi", "你好"])
async def handle_hello(event: MessageEvent):
"""
处理 /hello 命令
"""
# event.reply() 是一个快捷方法,可以直接回复消息
await event.reply(f"你好,{event.sender.nickname}")
```
## 2. 加载插件
不用你动手NEO Bot 启动时会自动加载 `plugins/` 目录下的所有 `.py` 文件。
## 3. 测试插件
现在,去群里或者私聊给 Bot 发送:
* `/hello`
* `/hi`
* `/你好`
Bot 应该会回复你:“你好,[你的昵称]!”
## 插件剖析
### `__plugin_meta__`
这个字典不是必须的,但强烈建议写上。它定义了插件的元信息,主要给 `/help` 命令用。
* `name`: 插件叫啥。
* `description`: 这插件是干嘛的。
* `usage`: 怎么用,写上具体的指令和说明。
### `@matcher.command()`
这是最核心的装饰器,用来注册一个命令处理器。
* **第一个参数**: `name` (str),命令的主名。
* `aliases`: `List[str]`,命令的别名列表。
* `permission`: `int`,执行该命令所需的权限等级,默认为 `USER` (所有人可用)。可以是 `ADMIN`, `OP`
### 处理器函数
`@matcher.command()` 装饰的函数就是处理器。它必须是一个 `async` 异步函数。
* **参数**: 框架会自动往里注入参数,你只需要用类型提示声明你需要什么。
* `event: MessageEvent`: 这是最常用的,包含了消息的所有信息,比如发送者、群号、消息内容等。
* `args: str`: 如果命令有参数(比如 `/echo hello world``args` 就是 `hello world` 这部分字符串。
就这么简单,一个最基础的插件就写完了。
## 进阶阅读
- [指令处理](./command-handling.md): 了解如何处理参数、获取用户输入。
- [最佳实践](./best-practices.md): 学习如何编写更健壮、更高效的插件。
- [插件详解:/status 状态监控](./status-plugin.md): 深入了解内置的状态监控插件是如何实现的。