3分钟快速编写插件
插件页界面介绍
懒人百宝箱的插件是使用 javascript 编写的,插件的主要功能是处理用户的消息,然后返回一个回复。
我们可以在设置页面的 “插件设置” 里面的 “自定义” 中编写我们的插件。首先是插件的基础信息,我们可以设置插件的名称,描述,以及插件的图标。
然后是插件的编辑区,我们可以在这里编写我们的插件代码。记得写完后点击保存。或者 Ctrl + S 保存。如果觉得插件写的不对,可以点 击重置按钮,重置插件。
最后是 测试插件 页
我们可以在这里测试我们的插件,看看插件的执行结果。也可以自己添加一些模拟数据,以便测试插件的效果。
最后,别忘了点击底部的新增按钮,将插件添加到应用中。
点击返回列表,我们可以看到我们刚刚添加的插件。
然后我们点击启用插件,就可以在应用中使用我们的插件了。
插件的结构
const cc = require('config_srv');
const rp = require('reply_srv');
/**
* 插件主函数
* @param {AppContext} ctx - 上下文信息
* @param {Message[]} messages - 消息数组
* @returns {Reply} 插件执行结果
*/
async function main(ctx, messages) {
const cfg = await cc.get(ctx);
return await rp.getReply(cfg, ctx, messages);
}
我们这里来简单的介绍下各个参数的含义:
AppContext
:上下文信息,包含了当前用户的信息,当前插件的信息等Message[]
:消息数组,包含了用户发送的消息
我们可以通过这两个参数来处理用户的消息,然后返回一个回复。
消息数组
这个消息的结构是一个数组,数组中的每个元素都是一个消息对象,消息对象的结构如下:
export type RoleType = 'SELF' | 'OTHER' | 'SYSTEM';
export type MessageType = 'TEXT' | 'IMAGE' | 'VIDEO' | 'FILE';
export interface Message {
sender: string; // 发送者的用户名,注意有些平台可能没有这个信息
content: string; // 消息内容
role: RoleType; // 发送者的角色
type: MessageType; // 消息类型
}
一般我们只需处理 OTHER 类型的消息即可,因为这是用户发送的消息。SELF 类型的消息是自己发送的消息,SYSTEM 类型的消息是系统消息,一般不需要处理。
例如我们只需要处理文本消息,可以通过 messages.filter(m => m.type === 'TEXT')
来获取。
例如:
async function main(ctx, messages) {
lastMessage = messages.filter(m => m.type === 'TEXT').pop();
// ...
}
回复消息
上面介绍了插件的输入,下面我们来介绍插件的输出,即回复消息。
export interface ReplyDTO {
content: string;
type: MessageType;
}
回复时只需要返回这个对象即可,例如:
async function main(ctx, messages) {
return {
content: '你好',
type: 'TEXT',
};
}
那么这个插件就会回复用户 你好
这个消息。当然你可以按你的需求来做更复杂的需求,例如我们改造一下标准的插件:
const cc = require('config_srv');
const rp = require('reply_srv');
async function main(ctx, messages) {
const cfg = await cc.get(ctx);
const reply = await rp.getReply(cfg, ctx, messages);
// 我们替换一下 reply 的 '你好' 为 '您好'
reply.content = reply.content.replace('你好', '您好');
return reply;
}
调试插件
好了,我们已经介绍了插件的编写,下面我们来介绍一下如何调试插件。
首先我们进入到这个设置页面,然后打开 “启用自定义插件” 这个开关,然后我们可以在这个页面看到一个编辑器,再在上面输入我们的插件代码,然后点击保存即可。
async function main(ctx, messages) {
return {
content: '你好这是一个测试插件',
type: 'TEXT',
};
}
再点击 “测试插件” 按钮,我们就可以看到插件的执行结果了。
可以看到上面已经展示了插件的执行结果,这样我们就可以很方便的调试插件了。
打印日志
有时候我们需要打印一些日志来调试插件,这时候我们可以使用 console.log
来打印日志,这些日志会在控制台中显示。
async function main(ctx, messages) {
console.log('插件开始执行');
return {
content: '你好这是一个测试插件',
type: 'TEXT',
};
}
即可在控制台中看到这个日志。