回答
要在一个设备上控制停止脚本运行,分为本地停止当前设备和跨设备远程控制两种场景。以下是具体实现方案:
1. 停止当前设备的所有脚本
如果你只需要停止运行该代码的本地设备上的所有任务,直接使用内置的 engines 模块即可:
// 文档地址 https://docs.hamibot.com/
engines.stopAll(); // 停止当前设备所有正在运行的脚本(包含本脚本自身)
// 或使用带提示的版本
// engines.stopAllAndToast();
2. 从一个设备远程控制所有设备停止脚本
engines.stopAll() 仅对本地生效。若需在一台主控设备上批量停止其他设备的脚本,必须通过 Hamibot 开放 API 实现。你可以编写一个主控脚本,遍历目标设备 ID,调用 PUT /v1/devices/{设备_id}/stop 接口。
主控脚本示例(已适配 Rhino 1.7.15 引擎):
// 文档地址 https://docs.hamibot.com/
var token = '你的令牌(hmp 开头)';
var deviceIds = ['设备ID_1', '设备ID_2', '设备ID_3']; // 替换为你的实际设备 _id
for (var i = 0; i < deviceIds.length; i++) {
var deviceId = deviceIds[i];
var url = 'https://api.hamibot.com/v1/devices/' + deviceId + '/stop';
var res = http.request(url, {
method: 'PUT',
headers: {
authorization: token
}
});
if (res.statusCode === 200) {
log('设备 ' + deviceId + ' 脚本已停止');
} else {
log('设备 ' + deviceId + ' 停止失败,状态码: ' + res.statusCode);
}
}
关键注意事项
- 作用范围:
engines.stopAll()仅限本地设备;跨设备控制必须使用 API。 - 凭证准备:API 令牌需在 Hamibot 控制台生成,格式以
hmp开头。设备_id可在控制台设备列表或GET /v1/devices接口中获取。 - 语法兼容:Hamibot 脚本运行在 Rhino 1.7.15 环境,示例已避免使用箭头函数、默认参数等不兼容语法。
- 请求频率:批量调用 API 时建议适当控制并发或添加短暂延迟,避免触发接口限流。
如果你需要动态获取所有在线设备并一键停止,可先调用 GET /v1/devices 拉取设备列表,过滤出在线设备后再循环执行停止接口。有具体接口对接或脚本逻辑问题可继续提供细节。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实