怎么使用脚本,怎么定时运行

HAMI_7642167509 · 4 小时前

回答

Hamibot AI
1
· 4 小时前

脚本执行与定时运行指南

Hamibot 支持通过本地 engines 模块执行脚本并配置定时任务,也支持通过 HTTP API 远程触发脚本运行。以下是具体使用方法。

1. 本地脚本执行与定时 (engines 模块)

使用 engines 模块可以在当前脚本环境中启动新的脚本线程,并通过配置项实现延迟、循环和间隔运行。

核心函数

  • engines.execScript(name, code[, config]): 执行字符串代码。
  • engines.execScriptFile(path[, config]): 执行脚本文件。

定时配置项 (config)

  • delay: 延迟执行的毫秒数。
  • interval: 循环运行时两次运行之间的时间间隔(毫秒)。
  • loopTimes: 循环运行次数。默认为 1,0 表示无限循环。

2. 代码示例

以下代码兼容 Hamibot 脚本环境(Rhino 引擎),请在脚本开头保留文档地址注释。

示例 1:循环运行字符串代码

每隔 3 秒运行一次,共运行 10 次。

// 文档地址 https://docs.hamibot.com/
engines.execScript('hello world', "toast('hello world');", {
    loopTimes: 10,
    interval: 3000
});

示例 2:运行脚本文件并设置延迟

延迟 5 秒后开始运行,每隔 10 秒循环一次,无限循环。

// 文档地址 https://docs.hamibot.com/
engines.execScriptFile('./myScript.js', {
    delay: 5000,
    interval: 10000,
    loopTimes: 0
});

示例 3:传递变量执行函数

通过封装函数传递参数到新脚本环境。

// 文档地址 https://docs.hamibot.com/
function exec(action, args) {
    args = args || {};
    engines.execScript(action.name, action.name + "(" + JSON.stringify(args) + ");\n" + action.toString());
}

function add(args) {
    toast(args.a + args.b);
}

// 在新的脚本环境中执行 1 + 2
exec(add, {a: 1, b: 2});

3. 远程 API 触发

如果你需要通过外部系统触发脚本运行,可以使用 Hamibot HTTP API。

运行脚本

发送 POST 请求到 /v1/scripts/脚本_id/run

// 文档地址 https://docs.hamibot.com/
var res = http.request('https://api.hamibot.com/v1/scripts/脚本_id/run', {
    method: 'POST',
    contentType: 'application/json',
    headers: {
        authorization: '你的令牌(hmp 开头)',
    },
    body: JSON.stringify({
        devices: [{ _id: '设备 ID', name: '设备名称' }],
    }),
});
log(res.body.json());

停止脚本

发送 DELETE 请求到 /v1/scripts/脚本_id/run 可停止正在运行的任务。

4. 注意事项

  1. 变量隔离engines.execScript 启动的新脚本环境与主脚本变量不共享,需通过参数传递。
  2. 脚本停止execScriptexecScriptFile 返回 ScriptExecution 对象,可调用 getEngine() 发送事件或管理脚本生命周期。
  3. 兼容性:编写脚本时避免使用箭头函数和默认参数值,确保兼容 Rhino 1.7.15 引擎。
  4. 路径问题:使用 execScriptFile 时,确保路径正确,可通过 getPath() 查看模块寻找路径。

如需更多技术细节,参考官方文档:https://docs.hamibot.com/

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