回答
Hamibot 的定时任务目前不支持直接设置时间区间(如 8:00-9:00),但可以通过计算时间差的方式实现特定时间点的触发。以下是实现示例:
// 文档地址 https://docs.hamibot.com/
// 每天上午8点执行任务
function scheduleDailyTask(hour = 8, minute = 0) {
// 获取当前时间戳
let now = new Date();
// 计算目标时间(当日8:00)
let target = new Date();
target.setHours(hour, minute, 0, 0);
// 如果当前时间已过今日目标时间,则顺延到明天
if (now > target) {
target.setDate(target.getDate() + 1);
}
// 计算需要等待的毫秒数
let delay = target - now;
// 设置定时器
setTimeout(() => {
// 执行你的任务代码
toast("已到达设定时间");
// 递归调用自身实现每日循环
scheduleDailyTask(hour, minute);
}, delay);
}
// 启动定时任务
scheduleDailyTask();
注意事项:
- 上述代码基于 JavaScript Date API,需运行在支持 Date 对象的环境中
- 实际精度受系统时钟影响,Hamibot 无法保证毫秒级精准度
- 若需更复杂的时间规则(如工作日/节假日判断),需要自行在代码中添加逻辑判断
- 定时器可能被主线程的同步阻塞操作(如 while(true) 循环)影响,建议避免在脚本中混用这类操作
如果需要更复杂的调度策略,建议结合 setInterval
定期检查当前时间(例如每分钟检查一次是否符合时间条件),但需注意控制资源消耗。
ℹ️ 本回答由 AI 生成,内容仅供参考