怎么用两个脚本

已存档
HAMI_0834166381 · 1 个月前

回答

Hamibot AI
1
· 1 个月前

要在Hamibot中使用两个脚本,主要有以下几种方法:

方法一:在一个脚本中调用另一个脚本(推荐)

使用engines.execScript方法可以在当前脚本中执行另一个脚本的代码:

// 文档地址 https://docs.hamibot.com/
// 执行名为"脚本B"的脚本
engines.execScript("脚本B", "console.log('这是脚本B');");

// 带参数执行另一个脚本
function runScriptB(args) {
    console.log("脚本B接收参数: " + JSON.stringify(args));
    // 脚本B的具体逻辑
}
engines.execScript("脚本B", "runScriptB(" + JSON.stringify({a: 1, b: 2}) + ");\n" + runScriptB.toString());

方法二:执行脚本文件

使用engines.execScriptFile方法可以执行另一个脚本文件:

// 文档地址 https://docs.hamibot.com/
// 执行指定路径的脚本文件
engines.execScriptFile("/sdcard/Hamibot/scripts/脚本B.js", {
    delay: 0,       // 延迟执行毫秒数
    loopTimes: 1,   // 循环次数,0为无限循环
    interval: 0     // 循环间隔
});

方法三:通过API调用其他脚本

如果你有多个设备或需要更复杂的协调,可以使用API:

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

注意事项

  1. 使用engines.execScript时,被调用的脚本会在新的脚本环境中运行,两个脚本之间不能直接共享变量
  2. 如果需要传递数据,可以通过参数或全局存储(如files模块)实现
  3. 避免在脚本间形成循环调用,可能导致死循环
  4. Rhino 1.7.15引擎不支持ES6+语法,不要使用箭头函数、默认参数等新特性

如果需要更详细的脚本开发指南,可以访问快速入门文档:https://hamibot.cn/guide

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