回答
在 Hamibot 中,想要让同一个脚本代码使用三种不同的配置运行,最稳定且推荐的做法是创建三个独立的脚本实例。每个实例拥有相同的代码,但保存不同的配置参数。这样可以实现独立的调度、独立的日志记录以及互不干扰的运行状态。
以下是具体的实施方案:
方案一:复制脚本实例(推荐)
这是最适合长期自动化任务的方案。
- 创建脚本:在 Hamibot 控制台创建第一个脚本,上传代码和配置文件。
- 复制脚本:使用控制台的“复制”功能,将该脚本复制两份,总共得到三个脚本。
- 区分命名:将三个脚本分别命名为例如“任务 - 配置 A"、“任务 - 配置 B"、“任务 - 配置 C"。
- 设置配置:分别进入这三个脚本的配置页面,设置不同的参数(例如不同的账号、不同的循环次数、不同的延迟时间等)。
- 独立调度:你可以为这三个脚本分别设置不同的定时任务,或者通过 API 分别触发它们。
优点:
- 配置隔离,互不影响。
- 每个脚本有独立的运行日志,便于排查问题。
- 支持独立的定时计划。
方案二:使用配置文件定义参数
如果你需要动态管理配置,可以在脚本中定义 config.json 文件。Hamibot 支持通过配置文件定义脚本运行时的参数界面。
config.json 示例:
[
{
"name": "account",
"label": "账号",
"type": "string",
"default": "user1"
},
{
"name": "interval",
"label": "循环间隔 (毫秒)",
"type": "number",
"default": 5000
}
]
在脚本代码中,你可以通过 hamibot.config 对象获取这些值:
// 文档地址 https://docs.hamibot.com/
var account = hamibot.config.account;
var interval = hamibot.config.interval;
log("当前使用账号:" + account);
log("当前循环间隔:" + interval);
// 业务逻辑
// ...
注意:即使使用了配置文件,若要同时维持三套不同的固定配置,仍然建议配合方案一(复制脚本),因为单个脚本 ID 通常只保存一套当前生效的配置值。
方案三:通过 engines 模块触发(高级)
如果你希望有一个主脚本同时启动这三个不同配置的任务,可以使用 engines 模块。你需要将三种配置对应的脚本上传为不同的文件路径或不同的脚本 ID。
// 文档地址 https://docs.hamibot.com/
// 假设你有三个不同的脚本文件代表三种配置
// 注意:engines.execScriptFile 适用于本地文件管理场景
var task1 = engines.execScriptFile("./task_config_1.js");
var task2 = engines.execScriptFile("./task_config_2.js");
var task3 = engines.execScriptFile("./task_config_3.js");
// 等待脚本启动
sleep(2000);
// 如果需要向脚本发送特定参数,可以使用 emit
// 前提是子脚本中监听了对应事件
task1.getEngine().emit("setAccount", "user1");
task2.getEngine().emit("setAccount", "user2");
task3.getEngine().emit("setAccount", "user3");
最佳实践建议
- 代码复用:将核心逻辑封装成函数或模块,三个脚本实例只引用相同的代码库,避免修改代码时需要更新三个地方。
- 配置命名:在配置文件中清晰标注参数用途,例如
delay(延迟)、loopTimes(循环次数)。 - 兼容性注意:编写脚本时请注意 JavaScript 引擎兼容性(Rhino 1.7.15)。
- 不要使用箭头函数(
=>)。 - 不要使用函数默认参数值。
- 使用
var声明变量。
- 不要使用箭头函数(
通过复制脚本实例的方式,你可以最简单地实现“同一代码,多种配置”的需求,同时保持任务管理的清晰度。
ℹ️ 本回答由 AI 生成,内容仅供参考