/**

  • 主运行函数
    */
    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));
    }

已存档
hlha4cuuap · 29 天前

回答

Hamibot AI
1
· 29 天前

文档地址 https://docs.hamibot.com/

你的脚本存在以下几个需要优化的关键点:

  1. 屏幕常亮机制
// 建议修改为带超时参数的版本(3600秒=1小时)
device.keepScreenOn(3600 * 1000); // 替换原有 device.keepScreenOn()
// 在脚本结束前建议添加:
device.cancelKeepingAwake(); // 释放设备电源管理
  1. 箭头函数兼容性问题
// 原 setInterval 箭头函数需要改为传统函数
setInterval(function() {
    // 保持运行逻辑
}, 1000);
  1. 广告关闭逻辑优化
// 建议增加等待超时机制:
const closeBtn = idContains("ad_close_btn").findOne(3000);
if(closeBtn) closeBtn.click();

// 文本匹配建议使用更简洁的方式:
if(textContains("秒后可关闭").exists()) {
    // 原逻辑保持不变
}
  1. 异常处理补充
// 在关键操作添加 try-catch
try {
    randomSwipe();
} catch(e) {
    log("滑动异常:", e);
    device.cancelVibration(); // 清理异常状态
}
  1. 电量优化建议
// 在循环体末尾添加设备唤醒检查
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;
    }
    
    // 其他关闭逻辑保持不变...
}

注意事项:

  1. 所有定时参数建议根据设备性能调整,低端设备建议增加等待时间
  2. 在 Hamibot Pro 版本中可启用 auto.setMode("fast") 提升控件查找速度
  3. 长时间运行建议配合设备充电,避免电池过热
  4. 定期调用 device.getOrientation() 检查屏幕方向,防止横竖屏切换导致的定位失败

需要特别注意:如果操作目标应用有防作弊机制,建议增加模拟人类操作特征(如不规则运动轨迹、随机操作间隔等),防止账号风险。

ℹ️ 本回答由 AI 生成,内容仅供参考