本帖最后由 8549149@qq.com 于 2022-10-11 18:00 编辑
开源代码供萌新参考,这个替换功能只能在易语言代码下面才有能替换,有顺序要求,不和其它插件通用
功能:比如说一串指令太长太复杂输入太麻烦,用户只需要设置一个自己记得住的指令就可以代替掉系统里的指令。
例子:比如说
输入:
然后机器人就会在用户下次发1的时候判断为查快递SF111312241231
原理:就是用户发设置xx=xxxxx,然后把QQ号保存到配置项里, 如果有人发消息的时候去文件夹里查有没有他的配置项,然后消息内容是否相匹配,如果完全匹配就用他设置的内容替换成新的消息内容。
扩展思路:
如果说想用户自定义指令的话,可以用文本替换的方法,先找用户要替换的文字是否存在,再替换成想要的文字(这个没编)
- .版本 2
- .程序集 DR应用
- .程序集变量 检查周期, 双精度小数型
- .程序集变量 分割符号, 文本型
- .程序集变量 汇率, 双精度小数型
- .程序集变量 保存路径, 文本型
- .程序集变量 机器人QQ, 整数型
- .程序集变量 夏令时判断, 逻辑型
- .子程序 Init, 文本型, 公开, 应用入口
- .局部变量 init, DRINIT
- ' 请勿在此方法内执行任何额外的业务逻辑
- init.置应用信息 (“输入替换”, “输入替换插件”, “1.0.0”, “QQ8549149”, “用户自定义一串指令”)
- init.置应用权限 (#DR_事件_个人消息)
- init.置应用权限 (#DR_事件_个人添加)
- init.置应用权限 (#DR_事件_频道消息)
- init.置应用权限 (#DR_事件_成员加入)
- init.置应用权限 (#DR_事件_成员退出)
- init.置应用事件 (&AppEvent)
- 返回 (init.解析 ())
- .子程序 AppEvent, 整数型, , 应用事件
- .参数 message, 文本型, , 事件内容
- .局部变量 e, DRJSON
- .局部变量 群号, 文本型
- .局部变量 QQ, 文本型
- .局部变量 应用目录, 文本型
- .局部变量 全_运行目录, 文本型
- .局部变量 全_配置文件, 文本型
- .局部变量 全_监控配置文件, 文本型
- .局部变量 全_时间间隔, 文本型
- .局部变量 消息内容, 文本型
- .局部变量 回复消息id, 文本型
- .局部变量 发送的内容, 文本型
- .局部变量 指令, 文本型
- .局部变量 指向, 文本型
- ' 分配保存配置的文件路径
- ' 查看配置文件目录 原来是在drea.exe主程序的目录下,可以自己改一下
- 全_运行目录 = 取运行目录 () + “\”
- 全_配置文件 = 全_运行目录 + “配置文件.ini”
- 全_时间间隔 = 全_运行目录 + “时间间隔.ini”
- 全_监控配置文件 = 全_运行目录 + “监控文件.ini”
- ' 写一点日志,方便看是什么消息
- 写配置项 (取运行目录 () + “\日志\” + 时间_格式化 (取现行时间 (), “yyyy-M-d”, ) + “.log”, 到文本 (取现行时间 ()), “消息”, message)
- ' JSON格式化,做出判断
- e.解析 (message)
- .判断开始 (e.取文本 (“event”) = #DR_事件_应用载入)
- DR.置日志发送 (“应用以载入”, “Info”)
- ' 做一些初始化工作
- ' 耗时操作请使用子线程,严禁主线程内执行!
- .判断 (e.取文本 (“event”) = #DR_事件_应用退出)
- DR.置日志发送 (“应用以卸载”, “Info”)
- ' 做一些资源释放工作
- ' 耗时操作请使用子线程,严禁主线程内执行!
- .如果真 (是否已创建 (配置窗口))
- 配置窗口.销毁 ()
- .如果真结束
- .判断 (e.取文本 (“event”) = #DR_事件_频道消息)
- 群号 = e.取文本 (“channelId”) ' 群号
- QQ = e.取文本 (“userId”) ' 用户号
- 消息内容 = e.取文本 (“messageBody”) ' 消息内容
- 回复消息id = e.取文本 (“messageId”) ' 不知道有什么作用
- ' 消息过滤 个人的习惯把特殊字符换掉
- 消息内容 = 文本_替换 (消息内容, , , , “ ”, “”, 字符 (10), “”, 字符 (13), “”, , , , )
- ' 定义个人数据库位置
- 保存路径 = 全_运行目录 + “指令\” + QQ + “.ini”
- ' 输出日志
- ' DR.置日志发送 (“事件:” + e.取文本 (“event”) + “群号:” + e.取文本 (“islandId”) + “频道号:” + e.取文本 (“channelId”) + “用户号:” + e.取文本 (“userId”) + “消息id:” + e.取文本 (“messageId”), “Debug”)
- ' DR.置日志发送 (“群号:” + 群号 + “用户号:” + QQ + 消息内容,“Info”)
- DR.置日志发送 (消息内容, “Info”)
- ' 正式程序
- ' ==========================================================================================================
- ' 测试机器人是否正常发消息
- .如果真 (消息内容 = “测试”)
- 发送的内容 = DR.码_艾特 (QQ) + #换行符 + “正常”
- DR.置频道消息发送 (, 群号, 发送的内容, 回复消息id)
- 返回 (1)
- .如果真结束
- ' ==========================================================================================================
- ' 判断数据库在不在,有的话匹配个人指令
- .如果真 (文件是否存在 (保存路径) = 真)
- .如果真 (读配置项 (保存路径, 消息内容, “结果”, “”) ≠ “”)
- 消息内容 = 读配置项 (保存路径, 消息内容, “结果”, “”)
- .如果真结束
- .如果真结束
- ' DR.置日志发送 (到文本 (文件是否存在 (保存路径)), “edbug”)
- ' DR.置日志发送 (保存路径, “edbug”)
- ' ==========================================================================================================
- ' 储存个人指令
- .如果真 (取文本左边 (消息内容, 8) = “设置指令”)
- 指令 = 文本_取左边 (文本_取右边 (消息内容, “设置指令”, , ), “=”, , )
- 指向 = 文本_取右边 (消息内容, “=”, , )
- .如果真 (指向 = “” 或 指令 = “”)
- 发送的内容 = “格式不正确,例子:设置指令XX=你需要记忆的指令 请注意等号大小”
- DR.置频道消息发送 (, 群号, 发送的内容, 回复消息id)
- 返回 (1)
- .如果真结束
- .如果真 (写配置项 (保存路径, 指令, “结果”, 指向) = 假)
- 发送的内容 = “保存指令失败”
- DR.置频道消息发送 (, 群号, 发送的内容, 回复消息id)
- 返回 (1)
- .如果真结束
- 发送的内容 = “保存成功”
- DR.置频道消息发送 (, 群号, 发送的内容, 回复消息id)
- 返回 (1)
- .如果真结束
- .如果真 (取文本左边 (消息内容, 8) = “重置指令”)
- .如果真 (文件_删除 (保存路径) = 真)
- 发送的内容 = “你所记忆的指令以被重置”
- DR.置频道消息发送 (, 群号, 发送的内容, 回复消息id)
- .如果真结束
- 返回 (1)
- .如果真结束
- .默认
- .判断结束
- 返回 (#DR_消息返回_忽略)
复制代码
|