Mineflayer AFK Bot部署至Render后反复进出服务器求助
解决Mineflayer AFK Bot在Render平台反复退出重连的问题
针对你遇到的本地运行正常、Render部署后Bot不断退出重连的问题,从代码和平台配置两方面给出排查与修复方案:
1. 先添加错误监听,定位断开原因
你的代码未监听error和kicked事件,无法明确Bot是被服务器踢出、连接失败还是出现代码报错,这是排查核心。修改initBot函数:
function initBot() { let bot = mineflayer.createBot(botargs) // 声明局部变量,避免全局污染 bot.once('spawn', () => { bot.chat("/tp @s 4 76 5") }) bot.on('physicTick', lookAtNearestPlayer) // 保留原跳跃逻辑或后续替换,先加错误监听 bot.on('physicTick', () => { bot.setControlState('jump', true) }) // 新增错误与踢出日志 bot.on('error', (err) => { console.error('Bot运行/连接错误:', err.message) }) bot.on('kicked', (reason) => { console.log('Bot被服务器踢出:', reason) }) bot.on('end', () => { console.log('Bot断开,5秒后尝试重连...') setTimeout(initBot, 5000) }) }
部署后查看Render日志,即可明确断开的具体原因。
2. 排查Render与Aternos的网络连通性
- 确认Aternos服务器地址正确性:Aternos可能会更换服务器IP,检查
MY SMP ADDRESS是否为最新的服务器地址。 - 检查Render出站端口:Aternos使用的24383端口需要Render实例能正常访问,Render默认开放多数出站端口,可在实例设置中确认网络规则。
- Aternos IP限制:部分Aternos服务器会限制陌生IP连接,尝试将Render实例的公网IP添加到Aternos白名单(若有该设置)。
3. 调整AFK行为,避免触发反作弊
原代码在physicTick中持续设置jump为true,这种机械重复的行为易被Aternos的反作弊机制检测到并踢出。改成间歇性跳跃:
// 替换原持续跳跃的逻辑 let jumpTickCounter = 0 bot.on('physicTick', () => { jumpTickCounter++ // 每10秒(200个tick)跳一次,每次持续0.25秒(5个tick) bot.setControlState('jump', jumpTickCounter % 200 < 5) })
4. 修复全局变量问题
原代码中bot未用let/const声明,属于全局变量,重连时可能引发逻辑冲突或内存泄漏,需在initBot内声明为局部变量(如第一步代码所示)。
5. 检查Render实例资源
若使用Render免费实例,可能因资源不足或自动休眠导致连接中断。可尝试升级到付费实例,或在Render设置中关闭实例自动休眠(若支持)。
内容的提问来源于stack exchange,提问作者Aariz Haque
相关产品推荐
相关产品推荐

