Loading... ## 一、前言 在AutMan中,插件的触发指令一般由作者在插件的头标注中设置,这就导致很多时候,作为插件的使用者,没办法直接去决定这个触发指令。 如果需要自定义指令,一般需要我们在系统管理=>指令管理里面进行指令转换,那么为了方便集中管理,所以有了这个插件(与其说是插件,实质上更像是一个标准)。 ## 二、食用教程 ### 0.准备工作 autMan版本:>=3.3.5 **启用全匹配规则的插件** :必须开启 (系统管理=>系统参数=>AUT云配置里面) ### 1.下载云插件 云市场订阅我的市场`sirhexs`,安装`自定义命令` `自定义命令mod`两个插件 并且在`自定义命令mod`的配参中填写鉴权token,如果你的aut暴露在公网,这一步尤其重要!!! ### 2.安装web插件 <button class=" btn m-b-xs btn-light " onclick="window.open('https://wwgn.lanzoul.com/i6CTt2kh730f','_blank')">蓝奏云:customCommand.zip</button> 下载这个压缩包,到`/autman/plugin/web`下解压。效果如下,注意要与图中的路径一致  ### 3.插件命令的初始化 把接入这个插件(标准)的插件定义的初始化命令发给你的机器人,即可完成命令的初始化。 <div class="tip inlineBlock warning"> 就是说,你在云市场下载了一个需要这个【自定义命令】的插件,你看插件的介绍,里面会有一条初始化指令,你复制发给机器人就行了。 </div> ### 4.自定义插件的命令 完成上述几步(只有完成过上面第3步初始化过命令的插件,web插件里面才会有相关数据),你就能去web插件(Web插件->customCommand)里面实现插件命令的自定义了。  ## 三、插件接入指南 <div class="tip inlineBlock error"> 这里是针对插件作者接入的教程,其他人看上面那部分就行。 </div> 这里我用最简单的es5来演示,其他语言原理一样,先定义你插件命令的相关配置数据,然后在插件中调用注册的微服务即可。 ```javascript //[title: 自定义指令接入Demo] //[author: sirhexs] //[language: es5] //[class: 工具类] //[service: 46883409] 售后联系方式 //[disable: false] 禁用开关,true表示禁用,false表示可用 //[admin: true] 是否为管理员指令 //[rule: ^sm:customCommandDemo:query$] 匹配规则,多个规则时向下依次写多个 //[rule: ^sm:customCommandDemo:signIn$] 匹配规则,多个规则时向下依次写多个 //[rule: ^自定义指令接入Demo命令初始化$] 匹配规则,多个规则时向下依次写多个 //[priority: 100] 优先级,数字越大表示优先级越高 //[platform: qq,qb,wx,tb,tg,web] 适用的平台 //[open_source: true]是否开源 //[version: 1.0.0]版本号 //[public: true] 是否发布?值为true或false,不设置则上传aut云时会自动设置为true,false时上传后不显示在市场中,但是搜索能搜索到,方便开发者测试 //[price: 0.00] 上架价格 //[description: 自定义指令接入Demo] 使用方法尽量写具体 // 定义主方法 function main() { // 一、定义插件命令的注册数据 const registerData = { "name": "自定义指令接入Demo", // 一般为插件的名称 "identifier": "sm:customCommandDemo", // 插件标识,为了避免插件名重复,建议使用 author:pluginName 的命名方式 "version": 1, // 版本,阿拉伯数字,用于判断是否需要更新指令的注册数据 "keys": [ // 命令数据 { "title": "查余额命令", // 命令的标题 "rule": "sm:customCommandDemo:query", // 命令在插件代码中固定的指令,建议使用 author:pluginName:rule 的命名方式,避免指令与其他作者重复 "description": "设置查余额的命令", // 命令的说明,能让用户更容易理解命令的作用 "data": [ // 默认的触发指令 "查余额", "查询" ], "request": true // 是否为必填项,如为必填项 data中至少要有一个元素,否则会注册失败 }, { "title": "签到命令", "rule": "sm:customCommandDemo:signIn", "description": "签到的命令", "data": [ "签到", "打卡" ], "request": false } ] } // 下面就正常进行命令判断 const msg = GetContent() //获取当前会话用户发的信息内容 if (msg === '自定义指令接入Demo命令初始化' && isAdmin()) { // 二、完成数据的注册 使用网络请求来完成 const port = call("port")() // 获取当前autMan内部的服务端口(其他语言也有这个函数,你找middleware中间件文件) const token = bucketGet('CustomCommand_Config', 'token') // 获取鉴权token const res = request({ // 网络请求函数 url: `http://localhost:${port}/customCommand?fun=register&token=${token}`, // 调用【自定义命令mod】中写好的注册微服务 method: "post", // 一定是post请求 dataType: "json", // 返回json数据,看你语言的请求函数设置就行 body: registerData, // 请求体,就传上面写好的注册数据就行 }) if (res) { sendText(res.message)// 给会话用户发送信息 return } sendText('未安装【自定义命令mod】插件')// 给会话用户发送信息 return } if (msg === 'sm:customCommandDemo:query') { // 查余额相关的代码 } if (msg === 'sm:customCommandDemo:signIn') { // 签到相关的代码 } } // 调用主方法,不然插件不运行 main() ``` 非常简单,是吧。 最后修改:2025 年 01 月 15 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏
4 条评论
这篇文章不错!
文章紧扣主题,观点鲜明,展现出深刻的思考维度。
若能弱化说教语气,传播效果会更好。
这篇文章如同一首动人的乐章,触动了读者内心深处的柔软。