回答
以下提供一份基于 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);
}
核心实现说明
- 通知监听优先:直接轮询聊天列表效率低且易漏消息。通过
events.observeNotification()监听系统通知栏,能实时捕获新消息,稳定性更高。 - 子线程隔离:转发操作包含多次
sleep和 UI 交互,使用threads.start()可防止阻塞主线程的通知监听循环。 - 控件选择器适配:
desc("搜索")、className("android.widget.EditText")等选择器基于常见企微版本编写。若运行时报错或找不到控件,请使用 Hamibot 的“布局分析”功能获取当前版本的准确属性。
最佳实践与注意事项
- 权限要求:运行前需在手机设置中为 Hamibot 开启“无障碍服务”和“通知使用权”。
- 防封与频率控制:企微对自动化操作有风控策略。建议在
forwardMessage末尾增加随机延迟sleep(random(1000, 3000)),避免高频连续转发触发限制。 - 多目标转发:若需转发至多个群,可将
TARGET_CHAT改为数组,并在函数内循环执行搜索与发送逻辑。 - 异常处理:实际环境中可能遇到弹窗、网络延迟或会话不存在的情况。建议加入
if (!targetChat) { toast("未找到目标会话"); return; }等容错判断。 - 脚本调试:首次运行建议开启 Hamibot 的“显示坐标”和“日志面板”,观察控件点击位置与执行耗时,逐步微调
sleep时长。
如需针对特定企微版本优化选择器,或实现带图片/文件转发的复杂逻辑,可提供当前企微版本号与具体需求,我将为你补充对应实现方案。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实