如何让Replit上的Discord Bot保持在线?新手技术求助
问题解决:Replit部署Discord Bot关闭后离线的问题
核心问题
你的keep_alive()调用放在了bot.run_discord_bot()之后,而Discord Bot的run方法是阻塞式的——它会持续占用主线程,永远不会执行到后面的keep_alive(),这就是保活代码无效的根本原因。
分步解决方法
1. 调整代码执行顺序
修改main.py的主函数部分,先启动保活服务,再运行机器人:
if __name__ == '__main__': check_verion() keep_alive() # 先启动Flask保活服务 bot.run_discord_bot() # 再运行机器人(阻塞调用)
2. 确保Flask依赖已安装
检查你的requirements.txt,如果没有flask依赖,添加一行:
flask==2.3.3
(版本号可使用最新稳定版)
3. Replit项目配置(付费用户)
- 打开项目的「Settings」(设置)
- 找到「Always On」(始终运行)选项并开启,Replit会维持项目后台运行
4. 免费用户替代方案
免费用户无法开启「Always On」,需要用外部监控工具定时请求你的Flask服务:
- 启动项目后,复制Replit提供的外部访问URL(格式类似
https://你的项目名.你的用户名.repl.co) - 使用UptimeRobot等工具,设置每5分钟请求一次该URL,防止Replit自动休眠项目
额外验证点
- 确认
keep_alive.py位于src文件夹下,和bot.py同级,保证导入路径正确 - 启动项目后,访问Replit的外部URL,能看到"I'm alive"则说明Flask服务正常运行
内容的提问来源于stack exchange,提问作者Jaser
相关产品推荐
相关产品推荐

