如何让Discord机器人24小时在线并持续展示自定义状态
问题本质
你的机器人运行在命令提示符的前台进程中,关闭终端窗口时系统会主动终止该进程,导致机器人下线、状态清空。
解决方案
方案1:本地后台挂载运行(适合本地设备长期开机的场景)
Windows环境可以使用nssm将脚本注册为系统服务,Linux/macOS环境可以使用PM2做进程守护,这里以适配全平台的PM2为例:
- 全局安装PM2:
npm install pm2 -g - 进入机器人代码所在文件夹,执行启动命令(将
bot.js替换为你的实际脚本文件名):pm2 start bot.js --name "pdm-bot" - 执行
pm2 save保存当前进程列表,再执行pm2 startup按照终端提示完成配置,即可实现开机自动启动机器人 - 日常管理命令:
- 查看运行状态:
pm2 status - 查看运行日志:
pm2 logs pdm-bot - 重启机器人:
pm2 restart pdm-bot
- 查看运行状态:
方案2:云服务器部署(适合24小时稳定运行场景)
将代码上传到云服务器后,按照方案1的步骤用PM2挂载运行,只要云服务器正常运行、网络通畅,机器人就能保持全天在线,无需本地设备一直开机。
代码优化建议
你现有代码启动后前5分钟不会设置状态,可以加一层立即执行逻辑,同时加异常判断避免获取不到服务器时报错:
client.once('ready', () => { console.log('pdm bot is online'); // 封装状态更新逻辑 const updatePresence = () => { const targetGuild = client.guilds.cache.get('替换为你的服务器ID') // 未获取到服务器时直接跳过本次更新,避免报错 if (!targetGuild) return client.user.setPresence({ activities: [{ name: `${targetGuild.memberCount} Users👥`, type: 'WATCHING' }], status: 'online' }); } // 启动时立即更新一次状态 updatePresence() // 每5分钟更新一次 setInterval(updatePresence, 1000 * 60 * 5); });
内容的提问来源于stack exchange,提问作者Pooyan
相关产品推荐
相关产品推荐

