Mineflayer Bot遭生物击杀后报'digging aborted'并断开连接求助
解决Mineflayer Bot被击杀后出现'digging aborted'错误并断开连接的问题
核心问题原因
当Bot被生物击杀时,若它正处于挖掘状态,游戏服务器会强制终止当前挖掘操作,触发digging aborted错误;若未捕获该错误,会直接导致Bot进程崩溃并断开服务器连接。
解决方案步骤
- 捕获挖掘操作错误:针对单个挖掘任务添加错误捕获,或监听Bot全局错误事件,过滤掉死亡导致的挖掘中断错误,避免进程退出。
- 监听死亡事件清理状态:当Bot触发死亡事件时,主动终止所有正在执行的操作(挖掘、移动等),重置Bot状态。
代码修改示例
假设你的原有代码包含类似挖掘逻辑,可按如下方式修改:
// 方式1:针对单个挖掘任务捕获错误 bot.dig(targetBlock, (err) => { if (err && err.message.includes('digging aborted')) { console.log('Bot死亡,挖掘操作终止'); return; // 忽略该错误,不触发崩溃 } if (err) console.error('挖掘操作异常:', err); }); // 方式2:监听全局错误,兜底防止进程崩溃 bot.on('error', (err) => { if (err.message.includes('digging aborted')) { console.log('因Bot死亡触发挖掘中断'); return; } console.error('Bot全局错误:', err); }); // 监听死亡事件,主动清理所有操作 bot.on('death', () => { console.log('Bot已死亡,清理当前任务'); // 终止所有控制状态(移动、挖掘等) bot.clearControlStates(); // 若有自定义任务队列,在此清空队列 // taskQueue = []; });
额外注意事项
- Bot复活后需重新初始化操作逻辑,比如恢复自动寻路、资源采集任务。
- 避免在Bot死亡状态下发送需要正常游戏状态的指令,需等待Bot复活并加载完游戏场景后再执行。
内容的提问来源于stack exchange,提问作者Mahmoud Mohamed
相关产品推荐
相关产品推荐

