hamibot是否有API支持修改脚本的配置?
当前场景下,存在这样的业务逻辑:
0. 脚本默认为自动模式,同时存在A模式和B模式;

  1. 通常场景下,用户使用自动模式,手动启动脚本;
  2. 为避免用户遗忘,我希望每次脚本执行 A/B 模式结束后,把配置自动置回自动模式;

是否有这样的API或者其他方法可以帮我实现这个需求?

已存档
xuxiaodongcode · 28 天前
第 1 条补充
·
28 天前

你提到这个方法:
“不过,从你的业务场景来看,更推荐在脚本内部实现配置重置逻辑:

在脚本执行结束时,自动将配置写入配置文件
使用 files.write 方法将模式重置为自动模式
// 文档地址 https://docs.hamibot.com/
try {
// 执行A模式或B模式的代码
if (mode === 'A') {
// A模式逻辑
} else if (mode === 'B') {
// B模式逻辑
}
} finally {
// 无论成功或失败,都将配置重置为自动模式
var config = {
mode: 'auto'
};
files.write('./config.json', JSON.stringify(config));
}
这种方式比调用API更简单可靠,避免了网络请求的延迟和失败风险,同时能确保在任何情况下都能正确重置配置模式。”

我用 files.write('./config.json', JSON.stringify(config)); 修改后的配置,会同步到 hamibot 控制台吗?

我的业务场景下,用户只存在远程在控制台中启动脚本的情况。我担心 files.write 修改配置为自动模式后,远端控制台仍然是 A或B 模式。

回答

Hamibot AI
1
· 28 天前

是的,Hamibot 提供了 API 支持修改脚本配置。你可以使用 PUT /v1/devscripts/开发脚本_id/files API 来更新脚本的配置文件。

具体实现方式如下:

// 文档地址 https://docs.hamibot.com/
var res = http.request('https://api.hamibot.com/v1/devscripts/你的开发脚本_id/files', {
    method: 'PUT',
    headers: {
        authorization: '你的令牌(hmp 开头)',
    },
    files: [
        {
            name: 'data',
            file: 'config.json',
            type: 'application/json'
        }
    ]
});

不过,从你的业务场景来看,更推荐在脚本内部实现配置重置逻辑:

  1. 在脚本执行结束时,自动将配置写入配置文件
  2. 使用 files.write 方法将模式重置为自动模式
// 文档地址 https://docs.hamibot.com/
try {
    // 执行A模式或B模式的代码
    if (mode === 'A') {
        // A模式逻辑
    } else if (mode === 'B') {
        // B模式逻辑
    }
} finally {
    // 无论成功或失败,都将配置重置为自动模式
    var config = {
        mode: 'auto'
    };
    files.write('./config.json', JSON.stringify(config));
}

这种方式比调用API更简单可靠,避免了网络请求的延迟和失败风险,同时能确保在任何情况下都能正确重置配置模式。


补充回答 1

你提出了一个很好的问题。files.write() 方法只能修改设备本地的配置文件,不会自动同步到 Hamibot 控制台。这意味着当用户从控制台远程启动脚本时,实际上使用的是控制台存储的配置版本,而不是设备本地的配置。

针对你的业务场景,这里有两种解决方案:

方案一:脚本启动时重置配置(推荐)

在脚本开始执行时,先通过 API 将远程配置重置为自动模式:

// 文档地址 https://docs.hamibot.com/
// 脚本开始时重置配置为自动模式
var res = http.request('https://api.hamibot.com/v1/devscripts/你的开发脚本_id/files', {
    method: 'PUT',
    headers: {
        authorization: '你的令牌(hmp 开头)',
    },
    files: [
        {
            name: 'data',
            file: JSON.stringify({
                mode: 'auto'
            }),
            type: 'application/json'
        }
    ]
});

// 继续执行脚本逻辑...

方案二:脚本结束时重置配置

// 文档地址 https://docs.hamibot.com/
try {
    // 执行A模式或B模式的代码
    if (mode === 'A') {
        // A模式逻辑
    } else if (mode === 'B') {
        // B模式逻辑
    }
} finally {
    // 脚本结束时通过API重置远程配置
    var res = http.request('https://api.hamibot.com/v1/devscripts/你的开发脚本_id/files', {
        method: 'PUT',
        headers: {
            authorization: '你的令牌(hmp 开头)',
        },
        files: [
            {
                name: 'data',
                file: JSON.stringify({
                    mode: 'auto'
                }),
                type: 'application/json'
            }
        ]
    });
}

推荐使用方案一,因为这样能确保即使用户中途停止脚本或者脚本异常退出,下次启动时配置仍然是自动模式,更符合你的业务需求。

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