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

如何让discord.js机器人加入新服务器时自动更新「Watching X Servers」状态?

解决Discord.js机器人自动更新服务器数量状态的方法

嘿,我来帮你搞定这个问题!其实不用每次重启机器人,我们只需要监听机器人加入/离开服务器的事件,实时触发状态更新就可以了,具体做法如下:

第一步:封装状态更新函数

先把设置状态的逻辑抽成一个可复用的函数,这样不管是机器人启动时,还是服务器数量变化时,都能直接调用:

function updateServerCountActivity(client) {
  const currentServerCount = client.guilds.cache.size;
  client.user.setActivity(`${currentServerCount} Servers | ^help`, { type: 'WATCHING' })
    .then(presence => console.log(`Activity updated to: ${presence.activities[0].name}`))
    .catch(error => console.error('Failed to update activity:', error));
}

第二步:在Ready事件中初始化状态

保留原来的启动逻辑,调用上面的函数设置初始状态:

client.on('ready', () => {
  console.log('Ready!');
  updateServerCountActivity(client); // 机器人启动时设置初始状态
});

第三步:监听服务器变动事件

添加两个事件监听,当机器人加入新服务器或者离开服务器时,立刻更新状态:

// 加入新服务器时触发更新
client.on('guildCreate', () => {
  console.log('Joined a new server!');
  updateServerCountActivity(client);
});

// 离开服务器时触发更新
client.on('guildDelete', () => {
  console.log('Left a server!');
  updateServerCountActivity(client);
});

原理说明

  • guildCreate和guildDelete是Discord.js提供的原生事件,会在机器人加入/离开服务器时实时触发,不需要重启机器人就能捕获到服务器数量变化。
  • 每次触发事件时,函数都会重新获取最新的服务器缓存数量(client.guilds.cache.size),再更新机器人的活动状态,确保显示的数字始终准确。

这样设置后,以后机器人被添加到新服务器,状态会自动更新成最新的服务器数量,再也不用手动重启啦!

内容的提问来源于stack exchange,提问作者Najmul190

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:08:12