说明

目前支持机器人lua插件在2018年11月17日发布了,各位记得先情迁下载QQ机器人哈

本文章会慢慢补充,lua机器人插件能力将在情迁QQ机器人 1.8.8以及以上版本体现.

安装目录

新建lua文件 也即是.lua后缀名的文件拷贝到/sdcard/qssq666/robot_plugin_lua文件夹

LUA语法介绍

不懂lua语法的可以百度一下, 这里大概介绍一下基本的lua语法也就是和其它语言不相同的地方。
字符串拼接用.. 数字转文本用tostring(要转换的变量)方法定义
参数名 没有类型,这是脚本语言的特点,简单的不能再简单,如js,python php

function 方法名(参数名)end

有返回值的方法

function 方法名(参数名)
return true;
end

调用对象方法obj:value() 这里使用:而java是用.访问对象字段
输入log(robot.name)) 这是本机器人支持的访问举例.注释
lua的注释是用 -- 而java是用// 易语言则用 或者某些语言用# bat 批处理用 ::

类型转换
字符串转number

str="333"
value=tonumber(str)
value=value+1  -- lua似乎不能自增,只能这么写

其他类型转字符串

obj=333
value=tostring(obj)

变量定义

global_var = 1 --全局变量
local temp_var = 2 --局部变量

循环

while (temp < 5) dotemp = temp + 1print("result:" .. tostring(temp)) --这里体现了类型转换的语法。
end
for i = 1, 3 doprint("从1 到 3,当前:" .. tostring(i))
end
for i = 1, 6, 2 doprint("高级用法 当前:" .. tostring(i) .. ",我每下次执行将跳动2次,如果当前为1那么为1,下次则为3,i>6跳出循环")
end

逻辑分支

if (value1 > 10) thenprint("值大于10")if (value1 == 80) thenprint("内循环,等于80")elseprint("不是80,但是肯定>10")end
elseif (value1 == 100) thenprint("等于100")
elseprint("不知道等于夺嫂了")
end

控制台输出

print("ffff") --lua本身的语法,这个需要打开adb.exe查看过滤
System.out日志类型

情迁QQ机器人SDK独有api参数

第一步/必须导包
如果不导包,将无法正常使用下面这些方法。require "cn.qssq666.robot.sdk"

日志提示

log(""警告日志")--输出警告日志
info("info日志")
debug("debug日志")
error("红色错误日志")
toast("toast提示日志")``这个运行后直接弹出气泡提示

lua掌握这一点点你就完全可以操作机器人大部分功能了 关于api方面呢其实和java doc api一样的,所以呢本文没有说明的方法完全可以举一反三的 从java 插件开发文档里面找到

收到消息的回调

function onReceiveMsgIsNeedIntercept(msgitem, aiteList, hasAite, hasAiteMe)end

发送消息给指定人
这里的item是必须的,这个函数应该在onReceiveMsgIsNeedIntercept方法里面写,也就是item这个参数直接用这个函数的item就行了

api. sendPrivateMsg(item, qq,message);

更多api,完全可以参考java api推算出来,我有空会写一个完整的demo,现在还在架构机器人中....

举例

require "cn.qssq666.robot.sdk"--  msgitem 消息体
-- aitelist 艾特的用户列表(不会包含自己)
-- hasAite 是否艾特了用户
-- hasAiteMe  是否艾特了机器人function onReceiveMsgIsNeedIntercept(msgitem, aiteList, hasAite, hasAiteMe)log("call onReceiveMsgIsNeedIntercept")text = msgitem:getMessage() --获取收到的消息内容log("receiveMsg:" .. text)qq = msgitem:getSenderuin() -- 哪个qq发的消息log("print toString[" .. msgitem:toString()) --这个方法可以打印昵称,qq,消息内容,发送时间,等等。info = ",aiteUser=," .. tostring(hasAite) .. ",aiteRobot:" .. tostring(hasAiteMe)--见名知意log("state:" .. info)return true
end--下面的代码无关紧要,自己酌情修改------------------------------
function onCreate(obj)log("onCreate call arg type: " .. type(obj))
endfunction getPluginName()return "test plugin"
endfunction onDestory()log("destory call")
end

再来一个能用的,发送消息LUA就会自动回复的机器人插件
复制下面的内容另存为 任意名.lua文件然后放到内部存储的qssq666/robot_plugin_lua文件夹中,然后运行情迁QQ机器人1.9.0
然后进入LUA插件管理就可以看到机器人了,记得进入机器人设置勾选启用机器人插件哦,不然发送消息LUA没有任何反应的哈
还可以长按编辑这个插件修改逻辑,也可以点击模拟测试一些机器人方法是否定义的情况。

-- 编写时间 2018.11
-- 文件编码 必须是UTF-8 must UTF-8
-- LUA插件的方法不受执行流程控制,因此测试这些代码的时候只能发送消息然后测试这些方法。
--或者可以不写在主流程中,比如如下代码的测试专用可以解除注释,当机器人加载的时候会气泡提示的toast调试,require "cn.qssq666.robot.sdk" --必须调用,否则无法使用api,等方法,以及toast等,只能使用print了。
--测试专用代码区开始 --可以直接运行 本文件放到内部存储 qssq666/robot_plugin_lua文件夹改后缀名 为.lua 然后在lua插件管理列表刷新然后长按运行或者编辑再运行。
-- 直接输入 adb push plugin.lua /sdcard/qssq666/robot_plugin_lua/ 推送到手机上。--toast("插件被加载,插件名:"..getPluginName())
--下面的调试代码需要通过日志查看软件或者电脑ADBConsole.exe查看。
--info("插件加载了,")
--warn("这是警告日志")
--error("红色错误日志")
--log("也是警告日志语法糖")
--debug("调试信息,")--测试专用代码区结束--  ---------------------机器人插件加载区
--  msgitem 消息体
-- aitelist 艾特的用户列表(不会包含自己)
-- hasAite 是否艾特了用户
-- hasAiteMe  是否艾特了机器人
--收到一条消息调用此方法,返回true表示 消息由插件处理
--,否则交给机器人自身的逻辑,比如自身有点歌系统之类的。
--本方法不定义将毫无意义。
function onReceiveMsgIsNeedIntercept(msgitem, aiteList, hasAite, hasAiteMe)log("call onReceiveMsgIsNeedIntercept")local text = msgitem:getMessage() --获取收到的消息内容log("receiveMsg:" .. text)local qq = msgitem:getSenderuin() -- 哪个qq发的消息log("print toString[" .. msgitem:toString()) --这个方法可以打印昵称,qq,消息内容,发送时间,等等。if (text == "LUA") then-- chunkname:41 attempt to index ? (a nil value) zhaobulocal str="Wellcome Use Lua Plugin! The is QssqRobot"msgitem:setMessage(str)print("item is nil?="..tostring(msgitem:getClass()==nil)..",className:"..tostring(msgitem:getClass()))print("api obj is nil?="..tostring(msgitem:getClass()==nil)..",className:"..tostring(api:getClass()))print(api:toString())api:showDebugToast("欢迎使用LUA机器人插件");-- print();-- print(msgitem:toString())api:sendMsg(msgitem) --是啥子消息我就回复啥消息 ,操作起来比较简单。return true--插件自身处理消息elseendinfo = ",aiteUser=," .. tostring(hasAite) .. ",aiteRobot:" .. tostring(hasAiteMe)--见名知意log("state:" .. info)return false
end--下面的代码无关紧要,自己酌情修改 ,可以不定义,------------------------------
--插件被加载的时候出发
function onCreate(obj)print("onCreate....[print]")log("onCreate call arg type: " .. type(obj))
end
--表示机器人最终处理的消息,即将发送的消息,是否拦截
function onReceiveRobotFinalCallMsgIsNeedIntercept(item, list, aite, haisaiteme)debug("call onReceiveRobotFinalCallMsgIsNeedIntercept..");return false
end
--插件作者名字
function getAuthorName()return "情迁2018"
end
--返回插件名称,再插件管理列表可以显示
function getPluginName()return "test plugin"
end--返回本插件的版本号
function getVersionName()return "1.0" --返回机器人的版本号
end
--返回本插件的版本号 数字标识 整数
function getVersionCode()return 1;
end
--返回编译时间字符串
function getBuildTime( )-- bodyreturn "无"
end--返回插件的描述信息
function getDescript()return "这是一个DEMO"
end
-- 返回插件demo包名
function getPackageName()return "cn.qssq666.lua.plugindemo"
end
--即将被销毁调用的方法。
function onDestory()log("destory call")
end

高级语法 lua创建java对象已经创建java实现类的模板diamante

frame = luajava.newInstance("java.awt.Frame", "Lua Java Console")
console = luajava.newInstance("java.awt.TextArea")
buttons_pn = luajava.newInstance("java.awt.Panel")
execute_bt = luajava.newInstance("java.awt.Button", "Execute")
clear_bt = luajava.newInstance("java.awt.Button", "Clear")
exit_bt = luajava.newInstance("java.awt.Button", "Exit")frame:setSize(600,300)buttons_pn:add(execute_bt)
buttons_pn:add(clear_bt)
buttons_pn:add(exit_bt)BorderLayout = luajava.bindClass("java.awt.BorderLayout")frame:add(BorderLayout.NORTH, console)
frame:add(BorderLayout.SOUTH, buttons_pn)
frame:pack()
frame:show()--
-- Listeners
--execute_cb = {
actionPerformed = function(ev)
print("execute")
pcall(loadstring(console:getText()))
end
}jproxy = luajava.createProxy("java.awt.event.ActionListener",execute_cb)execute_bt:addActionListener(jproxy)clear_cb = {actionPerformed= function (ev)
print("clear");
console:setText("");
end
}jproxy = luajava.createProxy("java.awt.event.ActionListener" ,clear_cb)
clear_bt:addActionListener(jproxy)exit_cb = { actionPerformed=function (ev)
print("exit")
frame:setVisible(false)
frame:dispose()
end
}jproxyb = luajava.createProxy("java.awt.event.ActionListener" ,exit_cb)exit_bt:addActionListener(jproxyb)close_cb = { }
function close_cb.windowClosing(ev)
print("close")
frame:setVisible(false)
frame:dispose()
endfunction close_cb.windowActivated(ev)
print("act")
endjproxy = luajava.createProxy("java.awt.event.WindowListener", close_cb)
frame:addWindowListener(jproxy)

http://www.taodudu.cc/news/show-4987929.html

相关文章:

  • MATLAB中添加机器人插件(名称为rvctools)分享给大家
  • 【聊天机器人插件】Tidio与SaleSmartly:谁更适合你的网站?
  • 【独立站运营】5款绝佳WooCommerce聊天机器人插件
  • 遨博协作机器人插件开发-机械臂无线手柄遥控插件开发
  • nonebot2聊天机器人插件4:群聊与戳一戳响应chat
  • 解决CSS position:fixed 兼容问题
  • css 中的position
  • 【css】CSS position(定位)属性
  • 计算机课件文字,计算机基础——文字录入ppt课件
  • 计算机应用技术故事会教案,信息技术教学故事
  • java不属于整数常量_病人52岁,诊断为高血压急症,呋塞米20毫克静推,执行后病人出现乏力、腹胀、肠鸣音减弱的症状,该病人可能发生了_学小易找答案...
  • 初中计算机课教什么时候,浅谈初中信息技术课教学
  • 计算机基础的建议,计算机应用基础教学实施建议.docx
  • 3年级计算机的知识能力,三年级信息技术考核评价方案
  • 盐城北大青鸟东台基地手绘课程作品展
  • S1北大青鸟笔记
  • 北大青鸟培训第二周第二天:HTML和CSS相关知识 (持续更新)
  • 一个基于JDBC的通用DAO的设计参考(北大青鸟课程)
  • 北大青鸟培训第四周第一天:HTML和CSS相关知识 【定位】(持续更新)
  • 北大青鸟课程与思科等其它IT培训课程的区别
  • 北大青鸟第二阶段课程进度
  • python短期速成班_许昌市北大青鸟accp课程
  • 北大青鸟BENET课程---ENBM知识点总结
  • 北大青鸟全套课程
  • unity制作释放技能效果
  • apt、yum、dnf 和 pkg比较
  • python可以写dnf外挂么_易语言写DNF外挂各种功能(很详细适合新手)
  • dnf幻影部分原代码
  • Vim技能修炼教程(10) - 代码跳转
  • java 微博阅读量怎么算_微博阅读量怎么来的 微博上的阅读量是怎么算的

情迁QQ机器人 Lua机器人插件开发教程相关推荐

  1. 情迁QQ机器人到底该怎么用?

    还想用情迁qq内置(不需要root)得朋友关注https://www.jianshu.com/p/b2b635aebc91 初次体验 如果你第一次打开本文章,我想对你说的是,这文章可能只供参考因为有些 ...

  2. 情迁QQ机器人sdk版本变更纪录以及兼容性适配

    初次体验 如果你第一次打开本文章,我想对你说的是,这文章可能只供参考因为有些设置又了很大的改动,以及方式也不一样了. 插件开发具体还请参考 手机端编写LUA脚本插件https://www.jiansh ...

  3. 情迁QQ机器人的激活步骤[重新给大家捋一遍]

    一般的激活步骤 1.使用xposed使q++激活. 2.打开qq->设置->q++设置->勾选监听聊天消息,勾选启用机器人. 3.打开情迁QQ机器人,进入设置确保启用群回复,启用私聊 ...

  4. 情迁QQ机器人安装包开源

    <pre name="code" class="plain">; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档! #define ...

  5. 情迁qq机器人图文api调用

    首先 需要情迁QQ机器人2.0,老版本调用此方法无效果 q++需要的版本是1.2.0 这个例子表示每次初始化调用onCreate就会发送一个图片到情迁QQ机器人开发者群 机器人qq不能随便填写,否则无 ...

  6. 情迁QQ机器人执行SQL以及变量技巧详解

    触发命令 配置SQL sql语句 权限 超级管理员 其它人无权限执行此命令. 支持的变量 执行sql得填写语句,支持变量如下:信息变量 群号:$g QQ:$u 机器人自身QQ: $s QQ机器人自带数 ...

  7. 情迁QQ机器人已具备图片发送能力

    如果要体验图片发送功能需要如下条件 使用Q++插件1.0.2以及以上 使用情迁QQ机器人1.7.0.2以及以上 使用QQ....这个不好说.低版本应该也可以使用 下载图片美女插件 然后移动到 存储目录 ...

  8. 情迁机器人Tim_情迁QQ机器人1.8.2更新说明

    群昵称违规支持重复词检测 为了实现检测重复必须把词组用()括起来 举例 比如这里应该输入的格式是 情迁-深圳-红米Note4a-N 而用户输入了情迁-情迁-情迁-N 那么这种不按套路出牌的用户如何对付 ...

  9. 情迁机器人Tim_情迁QQ机器人1.8.0更新后的使用技巧(卡片消息福利)

    1.增加卡片命令 增加管理员命令 配置 卡片 卡片消息xml 非管理员命令卡片 这个命令可以进入群白名单管理里面勾选开启,否则非管理发送此命令不会有任何回复. 2.卡片消息参数支持传递变量 3.变量支 ...

最新文章

  1. ×××作,不知写些什么
  2. ADO.NET Entity Framework Extensions 简单应用
  3. 【Spring学习】Spring简介
  4. axios请求拦截 做Loading加载
  5. 为什么font-family最后都会加上sans-serif字体?
  6. c matlab 引擎调用,【MATLAB与C的混合编程】之【C程序调用Matlab计算引擎】(1)
  7. JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
  8. asp编程实例:通过表单创建word的一个例子
  9. Vue-条件判断与循环遍历
  10. CC26x2R1笔记(8)CCS9.2 cc26xx环境的搭建
  11. python:TypeError:takes at least 8 arguments (9 given)
  12. 真正厉害的人,是怎么分析问题的?
  13. 刺激战场android闪退,刺激战场总是闪退怎么办?刺激战场闪退解决办法
  14. Verilog中的Signed Decimal与Signed Magnitude区别
  15. 工作方式需要主心骨、承载人
  16. GitHub的使用方法
  17. 应聘dba职位到底需要多少经验
  18. CentOS7安装可移植Prometheus+grafana--alertmanager配置邮件告警
  19. 第三集 情陷美丽青海湖,缘定小镇黑马河
  20. 信息收集详情(高能集锦)

热门文章

  1. android 横向滚动 导航,仿今日头条横向滚动导航栏--原生js
  2. 计算机安全沙箱,安全沙箱
  3. android 10.0 SystemUI屏蔽某个app的通知
  4. python firmata协议利用arduino操控麦克纳姆轮小车(附完整代码)
  5. [附源码]Nodejs计算机毕业设计汽车出租平台Express(程序+LW)
  6. 《Python 深度学习》刷书笔记 Chapter 4 关于电影评论模型的进一步探讨
  7. murmurhash2 Python实现(复现开源项目主页上的 Murmurhash2)
  8. 程序猿的24个段子,超级实用和搞笑哦!!!
  9. 铁路牵引变电所无人化改造方案 辅助监控系统
  10. 【UWP】AnimatedIcon 动态图标的实现步骤