+
80
-

autojs如何监听并自动回复安卓手机微信消息?

autojs如何监听并自动回复安卓手机微信消息?


网友回复

+
0
-

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

我知道答案,我要回答