autojs通知栏机器人

431 阅读3分钟

牙叔教程 简单易懂

为什么要写个通知栏机器人呢?

因为其他机器人框架有时候QQ登录不上去;

通知栏机器人一定登的上去, 因为就和正常使用QQ没啥区别, 只是用脚本加了一个通知栏监听

需要准备那些东西?

  • 两个废旧手机, 至少QQ要能正常使用, 内存也不能太低, 我觉得至少2G;
  • 两个QQ , 一个QQ负责监听消息, 另一个负责发送消息

使用场景

在少量的QQ群发送消息;

如果是大量QQ群, 就不合适了, 会发生两个问题

  • 漏掉通知栏消息
  • 机器人回复消息慢

如果你上两个问题, 你觉得没问题, 那就可以继续往下看, 否则不适合你, 不用往下看了

机器人流程图

为什么要用通知栏

因为通知栏能监听到QQ消息, 你用OCR之类的, 都不如通知栏靠谱

两台手机怎么通信

一台手机监听到消息后, 使用http发送消息给另一台手机;

另一台手机用autojs的nodejs引擎创建了一个服务器;

这就是CS架构, Client客户端, Server服务端

autojs在后台能保活吗

根据我一个月的实际测试, 没问题

我的手机一直在充电, 除非停电, 或者脚本发生错误, 24小时都可以正常运行

屏幕是相当耗电的, 所以我的手机是在息屏状态下运行的;

息屏和锁屏不一样, 息屏是把屏幕关掉, 大概就和你把电脑显示器电源关掉一样, 主机还是在运行的;

锁屏是按电源键锁屏

息屏效果可以看这个

www.yuque.com/yashujs/bfu…

我给了autojs以下权限

  • 后台自启
  • 电池白名单
  • 无障碍

通知栏怎么监听QQ消息

就直接调用通知栏监听API就行了;

当然了, 你肯定要允许QQ在通知栏发消息

代码如下

auto();
events.observeNotification();
events.onNotification(function (notification) {
  log(notification);
});

就这么简单

过滤监听的消息

不是每一句消息, 我们都需要转发;

我们只关心我们关心的消息, 我用的规则如下

  • 指定QQ群
  • 以#开头的消息
  • 消息长度大于3
  • 不是机器人发的消息

提取消息

通知栏监听的消息有很多属性, 我们把可能用到的属性提取出来

{
  "title": "牙叔教程二群 (7条新消息)",
  "text": "☾ 分寸 ☽: 输入法弹出还行,1秒:左右,输入:文字后缩进要8秒",
  "when": 1666862029027,
  "tickerText": "☾ 分寸 ☽(牙叔教程二群):输入法弹出还行,1秒左右,输入文字后缩进要8秒",
  "packageName": "com.tencent.mobileqq"
}

这里面没有QQ群号, 因此, 我们要添加map, 把群名和群号对应起来

通知栏消息过多怎么办

读取消息之后, 就删除该消息

notification.delete();

怎么转发消息

http

function postData(data) {
  log("客户端发送的数据: " + JSON.stringify(data));
  http.postJson(baseUrl, data, {}, function (res, err) {
    if (err) {
      console.error(err);
      return;
    }
    log("code = " + res.statusCode);
    log("html = " + res.body.string());
  });
}

加强保活效果

播放无声音乐

threads.start(function () {
  //传递第三个参数为true以循环播放音乐
  let audioPath = "/sdcard/脚本/noSound.mp3";
  media.playMusic(audioPath, 1, true);
});

定时把autojs放到前台

let packageName = "org.autojs.autojspro";
setInterval(() => {
  app.launchPackage(packageName);
  setTimeout(() => {
    home();
  }, 3000);
}, 1000 * 10);

总结

本节讲了通知栏机器人的原理, autojs保活以及客户端的通知栏监听,

下一节讲服务端

环境

设备: 小米11pro
Android版本: 12
Autojs版本: 9.3.9

名人名言

思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问 --- 牙叔教程

声明

部分内容来自网络 本教程仅用于学习, 禁止用于其他用途