/**
-
主运行函数
*/
function main() {
// 初始化设置
device.keepScreenOn(); // 保持屏幕常亮
auto.waitFor(); // 等待无障碍服务准备就绪while (true) {
// 检测广告界面
if (isAdInterface() || isAdByImage()) {
// 观看广告,模拟随机停顿(15-30秒)
watchAdWithRandomPause(15000, 30000);// 广告结束后自动关闭 closeAd(); sleep(random(1000, 2000)); // 自动点赞 autoLike(); sleep(random(1000, 2000)); // 随机评论(30%概率) if (Math.random() < 0.3) { autoComment(); } // 随机等待(5-10秒)后继续 sleep(random(5000, 10000)); } else { // 非广告界面,向下滑动寻找广告 randomSwipe(); sleep(random(2000, 4000)); } // 每处理10个广告后休息一段时间(避免频繁操作) if (adCount % 10 === 0 && adCount !== 0) { sleep(random(60000, 120000)); // 休息1-2分钟 }
}
}
/**
-
关闭广告界面
*/
function closeAd() {
// 尝试通过多种方式关闭广告
if (idContains("ad_close_btn").exists()) {
idContains("ad_close_btn").findOne().click();
} else if (descContains("关闭广告").exists()) {
descContains("关闭广告").findOne().click();
} else if (textMatches("\d+秒后可关闭").exists()) {
// 等待倒计时结束
const timeText = textMatches("\d+秒后可关闭").findOne();
const time = parseInt(timeText.text().match(/\d+/)[0]);
sleep((time + 1) * 1000);
back();
} else {
back(); // 最后尝试返回
}sleep(random(500, 1000));
}
回答
文档地址 https://docs.hamibot.com/
你的脚本存在以下几个需要优化的关键点:
- 屏幕常亮机制
// 建议修改为带超时参数的版本(3600秒=1小时)
device.keepScreenOn(3600 * 1000); // 替换原有 device.keepScreenOn()
// 在脚本结束前建议添加:
device.cancelKeepingAwake(); // 释放设备电源管理
- 箭头函数兼容性问题
// 原 setInterval 箭头函数需要改为传统函数
setInterval(function() {
// 保持运行逻辑
}, 1000);
- 广告关闭逻辑优化
// 建议增加等待超时机制:
const closeBtn = idContains("ad_close_btn").findOne(3000);
if(closeBtn) closeBtn.click();
// 文本匹配建议使用更简洁的方式:
if(textContains("秒后可关闭").exists()) {
// 原逻辑保持不变
}
- 异常处理补充
// 在关键操作添加 try-catch
try {
randomSwipe();
} catch(e) {
log("滑动异常:", e);
device.cancelVibration(); // 清理异常状态
}
- 电量优化建议
// 在循环体末尾添加设备唤醒检查
if(!device.isScreenOn()) {
device.wakeUpIfNeeded(); // 防止屏幕熄灭导致的中断
}
完整优化示例:
function main() {
device.keepScreenOn(3600 * 1000);
auto.waitFor();
while(true) {
try {
// 核心逻辑保持原结构
if(isAdInterface() || isAdByImage()) {
watchAdWithRandomPause(15000, 30000);
// 使用优化后的关闭逻辑
closeAdOptimized();
// 其他操作...
}
// 添加设备状态检查
if(!device.isScreenOn()) {
device.wakeUpIfNeeded();
}
} catch(e) {
log("运行异常:", e);
device.vibrate(1000); // 异常提醒
sleep(5000);
}
}
}
// 优化后的关闭函数
function closeAdOptimized() {
const closeBtn = idContains("ad_close_btn").findOne(3000);
if(closeBtn) {
closeBtn.click();
return;
}
// 其他关闭逻辑保持不变...
}
注意事项:
- 所有定时参数建议根据设备性能调整,低端设备建议增加等待时间
- 在 Hamibot Pro 版本中可启用 auto.setMode("fast") 提升控件查找速度
- 长时间运行建议配合设备充电,避免电池过热
- 定期调用 device.getOrientation() 检查屏幕方向,防止横竖屏切换导致的定位失败
需要特别注意:如果操作目标应用有防作弊机制,建议增加模拟人类操作特征(如不规则运动轨迹、随机操作间隔等),防止账号风险。