企微消息转发脚本

HAMI_6549240634 · 23 小时前

回答

Hamibot AI
1
· 23 小时前

以下提供一份基于 Hamibot 的企微消息转发基础脚本模板。该脚本通过监听系统通知捕获企微消息,并自动打开企微搜索目标会话完成转发。由于企微客户端 UI 会随版本迭代调整,脚本中的控件选择器需根据你当前安装的企微版本进行适配。

// 文档地址 https://docs.hamibot.com/
auto.waitFor();

var TARGET_CHAT = "目标群聊或联系人名称"; // 替换为实际转发目标
var KEYWORD = ""; // 留空表示转发所有通知消息,填写则仅转发包含该关键词的消息

// 开启通知监听
events.observeNotification();
events.on('notification', function(notification) {
    // 仅处理企业微信通知
    if (notification.getPackageName() !== "com.tencent.wework") return;
    
    var content = notification.getText();
    if (!content) return;
    
    // 关键词过滤
    if (KEYWORD && content.indexOf(KEYWORD) === -1) return;

    // 使用子线程执行转发,避免阻塞主线程监听
    threads.start(function() {
        forwardMessage(content);
    });
});

function forwardMessage(msg) {
    launchApp("企业微信");
    sleep(2000);

    // 1. 点击搜索入口(选择器需根据实际UI调整)
    var searchBtn = desc("搜索").findOne(3000);
    if (!searchBtn) {
        toast("未找到搜索按钮,请检查企微版本或UI结构");
        return;
    }
    searchBtn.click();
    sleep(1000);

    // 2. 输入目标会话名称
    var inputBox = className("android.widget.EditText").findOne(3000);
    if (inputBox) {
        inputBox.click();
        sleep(500);
        inputBox.setText(TARGET_CHAT);
        sleep(1000);
    }

    // 3. 点击搜索结果进入会话
    var targetChat = text(TARGET_CHAT).findOne(3000);
    if (targetChat) {
        targetChat.click();
        sleep(1500);

        // 4. 输入并发送消息
        var chatInput = className("android.widget.EditText").findOne(3000);
        if (chatInput) {
            chatInput.click();
            sleep(500);
            chatInput.setText(msg);
            sleep(500);
            var sendBtn = text("发送").findOne(3000);
            if (sendBtn) {
                sendBtn.click();
                toast("转发成功: " + msg.substring(0, 10) + "...");
            }
        }
    }
    
    sleep(1000);
    back(); // 返回上一页
}

// 保持脚本持续运行
while (true) {
    sleep(1000);
}

核心实现说明

  1. 通知监听优先:直接轮询聊天列表效率低且易漏消息。通过 events.observeNotification() 监听系统通知栏,能实时捕获新消息,稳定性更高。
  2. 子线程隔离:转发操作包含多次 sleep 和 UI 交互,使用 threads.start() 可防止阻塞主线程的通知监听循环。
  3. 控件选择器适配desc("搜索")className("android.widget.EditText") 等选择器基于常见企微版本编写。若运行时报错或找不到控件,请使用 Hamibot 的“布局分析”功能获取当前版本的准确属性。

最佳实践与注意事项

  • 权限要求:运行前需在手机设置中为 Hamibot 开启“无障碍服务”和“通知使用权”。
  • 防封与频率控制:企微对自动化操作有风控策略。建议在 forwardMessage 末尾增加随机延迟 sleep(random(1000, 3000)),避免高频连续转发触发限制。
  • 多目标转发:若需转发至多个群,可将 TARGET_CHAT 改为数组,并在函数内循环执行搜索与发送逻辑。
  • 异常处理:实际环境中可能遇到弹窗、网络延迟或会话不存在的情况。建议加入 if (!targetChat) { toast("未找到目标会话"); return; } 等容错判断。
  • 脚本调试:首次运行建议开启 Hamibot 的“显示坐标”和“日志面板”,观察控件点击位置与执行耗时,逐步微调 sleep 时长。

如需针对特定企微版本优化选择器,或实现带图片/文件转发的复杂逻辑,可提供当前企微版本号与具体需求,我将为你补充对应实现方案。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实