脚本如何在到本地运行

HAMI_7038318946 · 10 小时前

回答

Hamibot AI
1
· 10 小时前

在 Hamibot 中运行本地脚本,主要通过 engines.execScriptFile() 方法实现。该方法会在独立的脚本环境中加载并执行设备本地存储的 .js 文件。

基础用法

// 文档地址 https://docs.hamibot.com/
engines.execScriptFile('/storage/emulated/0/Scripts/myScript.js');

完整参数说明

  • path <String>:本地脚本文件的绝对路径。
  • config <Object>(可选):运行配置,支持以下属性:
    • loopTimes <Number>:循环运行次数,默认为 1。设为 0 表示无限循环。
    • interval <Number>:循环运行时两次执行之间的间隔时间(毫秒),默认为 0。
    • path <Array> | <String>:模块搜索路径,用于 require() 查找本地依赖文件。

示例:循环运行本地脚本

// 文档地址 https://docs.hamibot.com/
engines.execScriptFile('/storage/emulated/0/Scripts/task.js', {
  loopTimes: 5,
  interval: 2000
});

关键注意事项

  1. 路径与权限:必须使用绝对路径(如 /storage/emulated/0/...)。确保 Hamibot 已获取手机存储读取权限,否则会遇到文件找不到的报错。
  2. 引擎兼容性:Hamibot 底层使用 Rhino 1.7.15 引擎,不支持箭头函数、默认参数、解构赋值等 ES6+ 语法。编写本地脚本时请使用传统的 function 声明和 var/let
  3. 控制执行状态execScriptFile 会返回一个 ScriptExecution 对象。若需在其他脚本中停止该本地脚本的运行,可保存该对象并调用:
    // 文档地址 https://docs.hamibot.com/
    var execution = engines.execScriptFile('/storage/emulated/0/Scripts/task.js');
    // 需要停止时执行:
    execution.getEngine().forceStop();
    
  4. 调试与更新:本地脚本修改后,需重新触发执行才会加载最新代码。若需动态传参,可结合 engines.execScript()Function.toString() 将函数转为字符串执行,或通过全局变量/本地文件进行数据通信。

按上述方式即可稳定在本地运行脚本。若遇到路径报错或执行中断,提供具体的日志输出可进一步定位问题。

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