30行代码实现浪漫:用auto.js自动发送早安问候

30行代码实现浪漫:用auto.js自动发送早安问候

一、技术选型与场景分析

在移动端自动化领域,auto.js凭借其无障碍服务API和JavaScript脚本支持,成为实现UI自动化的理想工具。相比传统ADB命令或图像识别方案,auto.js具有三大优势:1)无需root权限即可操作系统级控件;2)支持跨应用自动化;3)开发效率高,30行代码即可实现完整功能。

典型应用场景

  1. 情侣关怀:定时发送个性化问候,提升情感温度
  2. 工作提醒:自动发送日报/周报提醒
  3. 社交运营:批量处理社交平台的定时发布需求
  4. 老年关怀:为父母设置自动健康提醒

二、核心代码实现与解析

以下代码已在auto.js 4.1.1版本验证通过,完整实现微信消息发送功能:

  1. // 配置参数区
  2. const config = {
  3. targetName: "宝贝", // 微信联系人昵称
  4. message: "早安呀!今天也要元气满满哦~☀️", // 发送内容
  5. sendTime: "07:30", // 发送时间(24小时制)
  6. checkInterval: 60000 // 检查时间间隔(毫秒)
  7. };
  8. // 主函数
  9. function main() {
  10. devices.setMusicEnabled(false); // 关闭音效
  11. console.show(); // 显示控制台
  12. // 定时检查机制
  13. setInterval(() => {
  14. const now = new Date();
  15. const [hours, minutes] = config.sendTime.split(":");
  16. const targetTime = new Date();
  17. targetTime.setHours(hours, minutes, 0, 0);
  18. // 时间匹配逻辑
  19. if (now.getHours() === parseInt(hours) &&
  20. now.getMinutes() === parseInt(minutes)) {
  21. sendWechatMessage();
  22. }
  23. }, config.checkInterval);
  24. console.log("早安机器人已启动,等待发送时间...");
  25. }
  26. // 微信发送函数
  27. function sendWechatMessage() {
  28. // 启动微信
  29. if (!app.isInstalled("com.tencent.mm")) {
  30. toast("微信未安装");
  31. return;
  32. }
  33. app.launch("com.tencent.mm");
  34. // 等待微信启动
  35. sleep(3000);
  36. // 搜索联系人(简化版,实际需根据UI结构调整)
  37. id("com.tencent.mm:id/bhn").findOne(10000)?.click(); // 搜索框
  38. sleep(1000);
  39. setText(config.targetName);
  40. sleep(2000);
  41. // 点击目标联系人(需根据实际UI调整)
  42. const target = textContains(config.targetName).findOne(5000);
  43. if (target) {
  44. target.parent().click();
  45. sleep(2000);
  46. // 输入并发送消息
  47. id("com.tencent.mm:id/aj_").findOne(2000)?.click();
  48. sleep(500);
  49. setText(config.message);
  50. sleep(500);
  51. id("com.tencent.mm:id/ajf").findOne(1000)?.click(); // 发送按钮
  52. console.log("消息已发送: " + new Date().toLocaleString());
  53. } else {
  54. console.error("未找到联系人: " + config.targetName);
  55. }
  56. }
  57. // 启动程序
  58. main();

代码关键点解析

  1. 时间控制机制:采用setInterval实现每分钟检查一次当前时间,精确到分钟级触发
  2. UI自动化策略:通过控件ID(如com.tencent.mm:id/bhn)定位元素,比图像识别更稳定
  3. 异常处理:包含微信未安装、联系人未找到等场景的容错处理
  4. 性能优化:设置合理的sleep时间避免操作过快导致失败

三、进阶优化方案

1. 多平台适配方案

  1. // 跨平台发送函数示例
  2. function sendMessage(platform, config) {
  3. switch(platform) {
  4. case "wechat":
  5. // 微信发送逻辑
  6. break;
  7. case "qq":
  8. // QQ发送逻辑
  9. break;
  10. case "sms":
  11. // 短信发送逻辑
  12. break;
  13. }
  14. }

2. 动态内容生成

  1. // 结合天气API的动态消息
  2. function getWeatherMessage() {
  3. const url = "https://api.example.com/weather";
  4. const res = http.get(url);
  5. const weather = JSON.parse(res.body).weather;
  6. return `早安!今日${weather},记得带伞哦~`;
  7. }

3. 分布式执行方案

对于需要多设备执行的场景,可通过HTTP服务实现控制:

  1. // 创建简单的HTTP控制接口
  2. function startHttpServer() {
  3. const server = http.createServer();
  4. server.listen(8080, () => {
  5. console.log("HTTP服务器启动于8080端口");
  6. });
  7. server.on("request", (req, res) => {
  8. if (req.url === "/send") {
  9. sendWechatMessage();
  10. res.write("消息已发送");
  11. }
  12. res.end();
  13. });
  14. }

四、部署与运维指南

1. 设备要求

  • Android 7.0+系统
  • auto.js 4.1.1+版本
  • 开启”无障碍服务”权限
  • 保持设备常亮(可通过device.keepScreenOn()实现)

2. 定时任务配置

推荐使用系统自带的任务计划程序:

  1. 创建BAT脚本:
    1. @echo off
    2. adb shell am start -n org.autojs.autojs/.MainActivity
    3. adb shell input keyevent 66 # 模拟回车键
  2. 在Windows任务计划程序中设置每天7:25触发

3. 日志监控系统

  1. // 增强版日志记录
  2. function logMessage(type, content) {
  3. const timestamp = new Date().toISOString();
  4. const logEntry = `[${timestamp}] [${type}] ${content}\n`;
  5. // 写入文件
  6. files.write("/sdcard/autojs_log.txt", logEntry, {append: true});
  7. // 可选:上传到服务器
  8. // http.post("https://api.example.com/log", {log: logEntry});
  9. }

五、安全与隐私考量

  1. 权限管理

    • 仅申请必要的无障碍权限
    • 避免获取通讯录等敏感权限
    • 代码中不存储明文密码
  2. 数据加密

    1. // 简单的AES加密示例
    2. const CryptoJS = require("crypto-js");
    3. const secretKey = "your-secret-key";
    4. function encrypt(text) {
    5. return CryptoJS.AES.encrypt(text, secretKey).toString();
    6. }
    7. function decrypt(ciphertext) {
    8. const bytes = CryptoJS.AES.decrypt(ciphertext, secretKey);
    9. return bytes.toString(CryptoJS.enc.Utf8);
    10. }
  3. 异常监控

    • 设置心跳检测机制
    • 关键操作前进行设备状态检查
    • 实现自动重启功能

六、扩展应用场景

  1. 生日惊喜:结合日历API实现生日自动祝福
  2. 纪念日提醒:通过计算日期差实现倒计时提醒
  3. 健康管理:定时发送饮水提醒、步数目标等
  4. 学习监督:为备考伴侣发送每日学习计划

七、常见问题解决方案

  1. 微信版本升级导致失效

    • 定期检查控件ID变化
    • 使用ui.selector()的弹性选择器
    • 维护不同版本的控件映射表
  2. 设备休眠导致中断

    1. // 保持设备唤醒
    2. device.keepScreenOn(3600000); // 保持1小时唤醒
  3. 多设备同步问题

    • 采用主从架构设计
    • 使用WebSocket实现实时通信
    • 通过云端配置中心统一管理

八、技术演进方向

  1. AI集成:结合NLP模型实现消息内容智能生成
  2. 跨平台框架:迁移至更稳定的AutoX.js
  3. 低代码平台:开发可视化配置界面
  4. 区块链应用:将重要纪念日上链存储

通过这30行核心代码,开发者不仅可以实现基础的自动化问候功能,更能以此为起点构建更复杂的移动端自动化系统。实际开发中需注意遵守各平台的使用条款,建议将此类工具用于合法的个人用途,避免用于商业营销等可能违反服务条款的场景。