autojs如何监听并自动回复安卓手机微信消息?
网友回复
autojs是啥?
auto.js被称为不需要Root权限的JavaScript自动化软件 Auto.js使用JavaScript作为脚本语言。 如果想要在电脑而不是手机上开发Auto.js,可以使用VS Code以及相应的Auto.js插件使得在电脑上编辑的脚本能推送到手机运行。 Auto.js下载地址及文档地址:https://hyb1996.github.io/AutoJs-Docs 如何理解它? Auto.js是一款安卓手机应用,和微信一样,安装在手机上使用
Auto.js是一款自动化软件,根据脚本内容便可以自动地执行相关的操作,并且手机无需root Auto.js的脚本需要使用JavaScript编写
安装
下载到手机,点击安装,哈哈哈,简单吧! Auto.js因某种原因全网下架,还好我早早的保存在网盘里。为了照顾大家,文末直接放出网盘链接。 autojs使用
手机安装auto.js后,需要打开无障碍模式(为了脚本能执行)和悬浮框(为了查看控件信息)
接下来需要写脚本了,你可以 在vscode上写脚本,写好后发给手机,在Auto.js应用中加载运行 在vscode上写脚本,电脑与手机在同一局域网,通过安装auto.js的vscode插件,实现在vscode上运行,手机就会相应执行脚本 在手机的Auto.js应用中直接码代码(不提倡)
实现思路
1)找到微信头像右上角有消息标志的聊天(注意直接跑下面代码的时候请确保聊天界面有此前提) 2)点击进入聊天窗口,找到所有消息 3)取最后一个消息(最新消息) 4)和之前的新消息对比是否发生变化 5)新消息推送至API 6)收到API消息发送
微信v8版本发送消息时,不再显示“发送”按钮了,也就没办法用找到“发送”控件的方法实现发送消息了。
尝试用KeyCode(code)方式,发送回车键,发现也无效,原因查了一下好像是需要ROOT还是安卓9以上此方法失效。
于是用坐标点击的方式点击键盘上的“发送”(回车键),先找到聊天界面加号的位置(右下角),出现键盘后此位置为“发送”按键位置。
var location = id("au0").findOne().bounds(); click(location.centerX(), location.centerY()); 智能聊天机器人使用的是青云客API,无需登陆直接调用。
http://api.qingyunke.com/
运行环境版本
1) Auto.js版本V4.1.1 Alpha2
2)微信版本V8.0.16
3)手机系统版本鸿蒙2.0.0
具体实现代码:
auto.waitFor() console.show(); log("微信自动聊天机器人") id("f67").waitFor()//等有收到新消息 toast("程序开始") id("f67").findOne().children().forEach(child => { var target = child.findOne(id("iot")); if (target) { child.click(); var name = child.findOne(id("fzg")); log("进入*" + name.text() + "*聊天对话") sleep(1000); var input_text = className("EditText").findOne(); var location = id("au0").findOne().bounds(); var last_msg = "初始化"; input_text.click(); while (true) { var all_msg = id("auk").find() if (all_msg.length > 0) { var new_msg = all_msg[all_msg.length - 1].text(); log("新消息*" + new_msg + "*"); if (last_msg != new_msg) { var res = http.get("http://api.qingyunke.com/api.php?key=free&appid=0&msg=" + new_msg); if (res.statusCode != 200) { log("请求失败: " + res.statusCode + " " + res.statusMessage); last_msg = "初始化"; } else { var r_msg = res.body.json(); input_text.setText(r_msg.content); if (click(location.centerX(), location.centerY())) { log("消息发送成功") } last_msg = new_msg; } sleep(2000); } } else { log("未找到聊天消息") } } } }); exit();