You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 21:54:03