Files
NeoBot/docs/plugin-development/index.md
K2Cr2O1 958c1df1fc feat(plugin): 新增极简插件开发模式
新增 SimplePlugin 基类,提供面向新手的极简插件开发方式
添加相关示例代码和文档说明
2026-03-08 19:02:09 +08:00

88 lines
3.0 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` 这部分字符串。
就这么简单,一个最基础的插件就写完了。
## 极简插件开发(推荐新手)
如果你觉得上面的装饰器写法太复杂,或者只是想快速写几个简单的指令,我们提供了一种**极简模式**。
你只需要定义一个类,写几个方法,它们就会自动变成指令!
- [查看极简插件开发指南](./simple-plugin.md)
## 进阶阅读
- [指令处理](./command-handling.md): 了解如何处理参数、获取用户输入。
- [最佳实践](./best-practices.md): 学习如何编写更健壮、更高效的插件。
- [插件详解:/status 状态监控](./status-plugin.md): 深入了解内置的状态监控插件是如何实现的。