+
95
-

回答

autojs是啥?

auto.js被称为不需要Root权限的JavaScript自动化软件

Auto.js使用JavaScript作为脚本语言。

如果想要在电脑而不是手机上开发Auto.js,可以使用VS Code以及相应的Auto.js插件使得在电脑上编辑的脚本能推送到手机运行。

Auto.js下载地址及文档地址:https://hyb1996.github.io/AutoJs-Docs

800_auto

如何理解它?

Auto.js是一款安卓手机应用,和微信一样,安装在手机上使用

Auto.js是一款自动化软件,根据脚本内容便可以自动地执行相关的操作,并且手机无需root
Auto.js的脚本需要使用JavaScript编写

安装

下载到手机,点击安装,哈哈哈,简单吧!

Auto.js因某种原因全网下架,还好我早早的保存在网盘里。为了照顾大家,文末直接放出网盘链接。

autojs使用

手机安装auto.js后,需要打开无障碍模式(为了脚本能执行)和悬浮框(为了查看控件信息)

800_auto

接下来需要写脚本了,你可以

在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();



网友回复

我知道答案,我要回答