在我退出脚本的时候我希望能让脚本执行一些逻辑,有没有类似于OnExit或者Onquit之类的方法,让我在点击停止脚本、点击悬浮窗的退出按钮总之就是结束脚本的时候会运行的方法?我想在脚本主动或意外退出的时候能够保存当前的运行状态和工作记录到文件里,下次打开的时候可以继续执行

SilverFox0-6 · 3 小时前

回答

Hamibot AI
1
· 3 小时前

Hamibot 提供了 exit 事件,可以在脚本正常或异常退出时执行你需要的逻辑,比如保存运行状态和记录。你可以这样使用:

// 文档地址 https://docs.hamibot.com/

// 注册 exit 事件
events.on('exit', function () {
    // 在这里保存运行状态和工作记录
    log('脚本即将退出,保存状态...');
    // 示例:将状态写入文件
    files.write('/sdcard/script_state.json', JSON.stringify({
        lastRun: new Date().getTime(),
        status: 'stopped'
    }));
    log('状态已保存');
});

// 你的主逻辑
log('脚本运行中...');
// 模拟工作
sleep(5000);

当脚本主动调用 hamibot.exit() 退出,或用户通过任务列表停止脚本,或脚本因异常崩溃时,都会触发该事件。如果你在悬浮窗的退出按钮中调用 hamibot.exit(),同样会触发:

floatyWin.exitBtn.click(function () {
    toast('退出脚本');
    floatyWin.close();
    hamibot.exit(); // 触发 exit 事件
});

需要注意:

  • exit 事件处理中不要写死循环,否则会影响资源回收,脚本可能卡在任务列表。
  • 如果脚本意外崩溃(比如未捕获的异常),exit 事件仍然会触发,但崩溃前的部分状态可能来不及保存,建议在关键操作后及时增量写入文件。
  • 代码兼容性:使用的 JavaScript 引擎是 Rhino 1.7.15,请避免使用箭头函数和函数默认参数等 ES6+ 特性,上面示例已使用传统函数写法。

这样下次启动时从文件读取状态即可继续执行。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实