Auto.js微信自动回复机器人(微信v8版本)
作者:互联网
一、前言
-
整体思路
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/
-
官方文档
https://hyb1996.github.io/AutoJs-Docs/#/
-
运行环境版本
1) Auto.js版本V4.1.1 Alpha2
2)微信版本V8.0.16
3)手机系统版本鸿蒙2.0.0
-
微信版本更新,导致控件id变了,需要用Auto.js重新抓取控件id,在下面代码中替换即可。更新于2022.2.8
二、代码
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();
三、效果
关注了小冰AI托管,和她自动互聊。
标签:findOne,微信,js,var,location,Auto,msg,id 来源: https://blog.csdn.net/web13765607643/article/details/123079420