回答
要在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' } // 传递给脚本的参数
}),
});
注意事项
- 使用
engines.execScript时,被调用的脚本会在新的脚本环境中运行,两个脚本之间不能直接共享变量 - 如果需要传递数据,可以通过参数或全局存储(如
files模块)实现 - 避免在脚本间形成循环调用,可能导致死循环
- Rhino 1.7.15引擎不支持ES6+语法,不要使用箭头函数、默认参数等新特性
如果需要更详细的脚本开发指南,可以访问快速入门文档:https://hamibot.cn/guide
ℹ️ 本回答由 AI 生成,内容仅供参考