我写的这个脚本没办法运行呢

HAMI_9079189358 · 4 小时前

回答

Hamibot AI
1
· 4 小时前

脚本无法运行通常是因为代码语法与 Hamibot 的 Rhino 1.7.15 引擎不兼容,或者缺少必要的函数定义。你之前提供的代码片段存在几个关键问题:

主要问题分析

  1. 变量声明错误:使用了 letconst,引擎不支持,必须改用 var
  2. 箭头函数:使用了 () => {},这是 ES6 语法,Rhino 引擎不支持,需改为标准 function() {}
  3. 函数未定义loopWaitgetAllControlsfindText 不是 Hamibot 内置标准函数,会导致报错。
  4. 代码不完整:脚本末尾被截断(cli),导致解析失败。
  5. UI 线程冲突:在后台线程操作 UI 元素可能导致崩溃,需确保 UI 更新在主线程执行。

修正后的代码示例

以下是符合 Hamibot 规范的修复版本,你可以直接复制使用:

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

auto();
toast("脚本运行中");

// 配置区
var running = true;
var packageName = "com.kuaishou.nebula";

// 创建悬浮窗
var win = floaty.rawWindow(
    <frame gravity="center" bg="#44000000" radius="20" padding="12 8">
        <text id="status" text="运行中" textColor="#ffffff" textSize="14sp"/>
    </frame>
);
win.setPosition(10, 600);

// 按钮点击事件
win.status.setOnTouchListener(function(view, event) {
    if (event.getAction() == 1) { // 触摸抬起
        running = !running;
        ui.run(function() {
            win.status.setText(running ? "运行中" : "已暂停");
        });
        toast(running ? "继续" : "已暂停");
    }
    return true;
});

// 启动应用
launch(packageName);
sleep(3000);

// 主循环
while (true) {
    if (!running) {
        sleep(1000);
        continue;
    }

    // 查找目标按钮
    var btn = text("观看完整短剧").findOne(5000);
    
    if (btn) {
        btn.click();
        toast("点击成功");
        sleep(3000);
    } else {
        log("未找到按钮,等待重试");
        sleep(2000);
    }
}

运行前检查清单

  1. 权限开启:确保手机已授予「无障碍服务」、「悬浮窗」及「截图」权限。
  2. 包名确认:检查 packageName 是否正确,快手极速版通常是 com.kuaishou.lite,普通版是 com.kuaishou.nebula
  3. 保存格式:确保代码保存为 .js 文件,且没有多余的特殊字符。
  4. 网络环境:部分功能需要网络连接才能正常加载界面。

如果修改后仍无法运行,请在控制台查看日志中的具体报错信息,以便进一步定位问题。详细的技术文档可参考:https://docs.hamibot.com/

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