插件开发
如果需要机器人本体提供的功能可查阅ATRI提供的功能、Agent智能体模块与LK插件提供的功能.
符合ATRI-LK规范的插件
1. 如何创建一个能够让ATRI识别的插件
首先在plugins目录下创建一个plugin_name.py文件或者一个plugin_name软件包。
在plugin_name.py或plugin_name/__init__.py中输入以下代码便可以创建一个ATRI能够识别的插件。
python
from ATRI.service import Service
service_name = Service("服务名").document("服务介绍").set_type(Service.ServiceType.TYPENAME).version('1.0.0')或者:
python
from ATRI.service import Service
service_name = Service(
"服务名"
"服务介绍"
'1.0.0'
Service.ServiceType.TYPENAME
)
Service.ServiceType.TYPENAME中的TYPENAME并不存在,请自行改为自己想要的类型。
服务的更多属性值请参考服务属性
2. 为服务添加功能
在创建完一个名为service_name的服务后,便可以为其添加事件响应器(Matcher)来实现功能的添加。
以下为添加一个名为matcher_name的类型为on_command的事件响应器代码,通过事件响应器实现功能。
python
matcher_name = service_name.on_command(cmd="指令名称", docs="指令介绍")更多匹配方式请参考事件响应器
ATRI插件依然也支持原版的事件响应器,但不能在服务菜单中找到。
3. 实现功能
后续插件功能的实现与NoneBot插件的实现一致。请参考官方文档学习插件编写。
4. 插件配置(YHN-LK0-024 新增)
从 YHN-LK0-024 版本开始,插件配置系统进行了完全重构,使用新的 PluginConfig + Field API 替代旧的 Pydantic BaseModel 方式。
新方式(推荐):
python
from ATRI.service import Service
from ATRI.configs import PluginConfig, Field
class MyPluginConfig(PluginConfig):
enabled = Field(
type_=bool,
default=True,
label="启用插件",
description="是否启用此插件"
)
max_count = Field(
type_=int,
default=100,
label="最大数量",
description="最大处理数量限制",
min=1,
max=1000
)
plugin = Service("我的插件", "插件说明", "1.0.0", Service.ServiceType.ENTERTAINMENT)
config = MyPluginConfig("我的插件")Field 参数说明:
type_: 字段类型(bool,int,float,str,list,dict)default: 默认值label: 前端显示的标签description: 字段描述min/max: 数值范围限制(仅数字类型)options: 选项列表(用于下拉选择)children: 子字段(用于嵌套配置)
访问配置:
python
# 读取配置
enabled = config.get("enabled")
max_count = config.get("max_count")
# 修改配置
config.set("enabled", False)
config.set("max_count", 200)详细文档请参考 PluginConfig 配置系统。
从ATRI移植
原版ATRI插件依然可用,但插件类型会成为默认值其他插件。从原版ATRI插件进行移植只需要进行以下修改即可。
python
# 原来的服务
service = Service("服务名").document("服务介绍").set_other_attribute(args,)
# 新的服务
service = Service("服务名").document("服务介绍").set_type(Service.ServiceType.TYPENAME).version('1.0.0').set_other_attribute(args,)从其他nonebot插件移植
待补充