如果不了解情迁QQ机器人的插件加载套路,请查看情迁软件分类的其它教程,这些教程还包含了lua插件开发教程和java插件开发教程等。

js插件脚本优势

可以随便修改,无需编译,便捷分享,多人协作开发更方便。

js插件存放目录

/sdcard/qssq666/robot_plugin_js

电脑编写js

电脑配置adb然后推送到手机

adb push plugin.js /sdcard/qssq666/robot_plugin_js/

js插件手机端编写

机器人内部集成了开发工具可以直接编写而且可以随时模拟发送消息,

手机端开发工具功能强大支持语法高亮,格式化代码,以及快捷粘贴模板代码等。

pic

code2

DEMO测试代码

/*

编写时间 2018.11

JS插件的方法不受执行流程控制,因此测试这些代码的时候只能发送消息然后测试这些方法。

或者可以不写在主流程中,比如如下代码的测试专用可以解除注释,当机器人加载的时候会气泡提示的toast调试,

//可以直接运行 本文件放到内部存储 qssq666/robot_plugin_js 件夹改后缀名 为.js 然后在js插件管理列表刷新然后长按运行或者编辑再运行。

// 直接输入 adb push plugin.js /sdcard/qssq666/robot_plugin_js/ 推送到手机上。

电脑端 可以使用visual studio code开发,我会考虑弄自动补全api的事情。

*/

//toast("插件被加载,插件名."+getPluginName())

//下面的调试代码需要通过日志查看软件或者电脑ADBConsole.exe查看。

//log.info("插件加载了,")

//log.warn("这是警告日志")

//log.error("红色错误日志")

//log.log.w"也是警告日志语法糖")

//log.debug("调试信息,")

//测试专用代码区结束

log.debug("你能看到本消息说明你点击的是运行按钮!")

-机器人插件加载区

/**

* 收到一条消息调用此方法,返回true表示 消息由插件处理

* 否则交给机器人自身的逻辑,比如自身有点歌系统之类的。

* 本方法不定义将毫无意义。

* @param {*} msgitem 消息体

* @param {*} aiteList 艾特的用户列表

* @param {*} hasAite 是否艾特了用户

* @param {*} hasAiteMe 是否艾特了机器人

*/

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

log.w("msgitem:" + msgitem);

if (aiteList) {

log.w("aitelist count:" + aiteList.size());

for (var i = 0; i < aiteList.size(); i++) {

log.w("aitelist:" + i + ":" + aiteList.get(i).getNickname());

}

}

log.w("call onReceiveMsgIsNeedIntercept")

var text = msgitem.getMessage() //获取收到的消息内容

log.w("receiveMsg." + text)

var qq = msgitem.getSenderuin() // 哪个qq发的消息

log.w("print toString[" + msgitem.toString()) //这个方法可以打印昵称,qq,消息内容,发送时间,等等。

if (text == "JAVASCRIPT") {

// chunkname.41 attempt to index ? (a nil value) zhaobu

var str = "Wellcome Use JAVASCRIPT Plugin! The is QssqRobot"

msgitem.setMessage(str)

print("item is nil?=" + String(msgitem.getClass() == nil) + ",className." + String(msgitem.getClass()))

print("api obj is nil?=" + String(msgitem.getClass() == nil) + ",className." + String(api.getClass()))

print(api.toString())

api.showDebugToast("欢迎使用js机器人插件");

// print();

// print(msgitem.toString())

api.sendMsg(msgitem) //是啥子消息我就回复啥消息 ,操作起来比较简单。

return true

} else if (text == "TESTMSG") {

var apiCallBackclass = {

onSucc: function (bytes) {

msgitem = msgitem.clone();//如果调用了setMessage等set方法,必须使用clone,否则就必须返回true拦截消息不给机器人内部的逻辑处理,不然会出现混乱。

log.info("queryWebSite result: " + new java.lang.String(bytes));

var str = "jsplugin->" + new java.lang.String(bytes)

msgitem.setMessage(str)

api.sendMsg(msgitem);

},

onFail: function (code, exception) {

log.e("error,code=" + code + ",exception:" + exception);//or

log.e("error,code=" + code + ",exception:", exception);//print stackflow

}

};

//这个逻辑的意思是如果有人发送TESTMSG,将异步请求网络查询数据,然后发送给发送者。

api.sendAsyncGetRequest("http://qssq666.cn/update/update.json", apiCallBackclass);

return true;

}

// function apiCallBackclass.onSucc(bytes)

return false;

}

//下面的代码无关紧要,自己酌情修改可以不定义 如果定义将在插件列表体现或者 用于获取上下文,上下文目前js无法操作,无法得知具体原因。 //

//插件被加载的时候出发

function onCreate(contextx) {

log.w("onCreate++[print]")

log.w("onCreate call arg type. " + ",robotVersion:" + robot.VERSION_CODE)

//log.w("onCreate call arg type. " + typeof (obj)+",robotVersion:"+robot.VERSION_CODE)

}

//表示机器人最终处理的消息,即将发送的消息,是否拦截

function onReceiveRobotFinalCallMsgIsNeedIntercept(item, list, aite, haisaiteme) {

log.w("call onReceiveRobotFinalCallMsgIsNeedIntercept:" + item.getMessage());

return false

}

//插件作者名字

function getAuthorName() {

return "情迁2018"

}

//返回插件名称,再插件管理列表可以显示

function getPluginName() {

return "test plugin"

}

//返回本插件的版本号

function getVersionName() {

return "1.0" //返回机器人的版本号

}

//返回本插件的版本号 数字标识 整数

function getVersionCode() {

return parseInt(1);

}

//返回编译时间字符串

function getBuildTime() {

// body

return "无"

}

//返回插件的描述信息

function getDescript() {

return "这是一个DEMO"

}

// 返回插件demo包名

function getPackageName() {

return "cn.qssq666.js.plugindemo"

}

//即将被销毁调用的方法。

function onDestory() {

log.w("destory call")

}

调用API

function myFunction() {

log.w("函数执行了..");

return;

}

myFunction();

function addCalc(value1, value2) {

return value1 + value2;

}

var a = 1; b = 3;

log.w(java.lang.String.format("%f + %f 得结果是=%f ", Number(a), Number(b), Number(addCalc(a,b))));

``

java写qq机器人插件_情迁QQ机器人JS插件/使用开发教程相关推荐

  1. 情迁QQ机器人 Lua机器人插件开发教程

    说明 目前支持机器人lua插件在2018年11月17日发布了,各位记得先情迁下载QQ机器人哈 本文章会慢慢补充,lua机器人插件能力将在情迁QQ机器人 1.8.8以及以上版本体现. 安装目录 新建lu ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. java 写文件 权限不够_教你解决Linux系统中JAVA创建文件后权限不足的问题

    在作业中,项目使用文件上传. 这个功能很常见. 当Kai Ge今天更改其官方帐户时,他遇到了一个问题,即无法访问下载的文件,也无法通过浏览器访问该文件. 它是怎么发生的? 经过许多问题之后,事实证明这 ...

  10. 视频教程-微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-微信开发

    微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试 ...

最新文章

  1. 学习Python遇到的热门问题整理
  2. MySQL数据库字符集和整理
  3. 领英2017报告:机器学习、大数据工程师成为最热门的新兴职业
  4. python能实现excel什么功能_Python pandas对excel的操作实现示例
  5. 利用Advanced Installer将asp.netMVC连同IIS服务和mysql数据库一块打包成exe安装包
  6. rhel8手动安装mysql_RHEL8 CentOS8 下安装 MySQL 8.0亲测
  7. 设计模式之Protocol实现代理模式
  8. MySQL数据库备份之主从同步配置
  9. 大数据和人工智能的关系是什么?
  10. WordPress插入图片无法居中的解决方法
  11. QT给文本添加链接事件
  12. mysql 大分页查询优化_Mysql骚操作:优化大分页查询
  13. sql查询月天数之和,函数相加
  14. 请列举中图片内存处理的六种方法,并简单介绍
  15. Spring Boot(5) web开发(3)拦截器、文件上传、异常处理
  16. win32_bios 的对象编辑器无法保存对象_技能编辑器设计文档
  17. webbench 压力测试软件
  18. android 8 推送到tv,手机如何推送文件到电视,三款TV投屏软件亲测推荐!
  19. conda Collecting package metadata (repodata.json)卡住或 failed问题
  20. matlab可见光通信,可见光通信研究工作matlab代码

热门文章

  1. 【asm基础】使用vs创建asm库
  2. 五分钟教会如何计算CAN总线负载率,包学包会
  3. 递归解决字符串逆序输出
  4. dede添加文章php,DEDE伪原创插件 一键导入1.5万替换词数据
  5. 中小型城市商业银行数字化转型实践(一)整体技术架构转型(双态IT)
  6. 【行业案例分析】3C数码行业B2B供应链平台开发案例
  7. [SoftWare]基于Windriver快速驱动开发
  8. 电力拖动自动控制系统复习补充
  9. 晶体管放大电路与Multisim仿真学习笔记
  10. 网站开发项目的需求分析