Discord.js 机器人状态

Discord.js Bot Status

不,我不是在问如何设置我的机器人的状态。我在问如何让我的机器人的状态每 5-7 秒更改一次到另一个状态。我该怎么做:

client.user.setActivity(`dsc.gg/ultraa | ?help | ${client.guilds.cache.size} servers`, { type: 'WATCHING' });

每隔几秒更改为“外面很冷”、“420 台服务器”和“?help | dsc.gg/ultraa”。我如何让这些状态在彼此之间轮换?

注:此代码适用于Discord.js V13.3.1


如您所描述的那样,对于旋转状态,您可以通过在 ready 事件中放置一些代码来在一段时间后更改状态。这将需要 util 包,可以使用以下方式安装:

  • npm: npm install util
  • 纱线:yarn install util

安装包后,您将创建一个名为 wait 的函数。这是一种简单的等待方式,不会阻塞脚本的其余部分。

const wait = require('util').promisify(setTimeout);

这个功能将服务于我们的主要目的,即在切换状态之间产生延迟。然后,我们将使用setInterval在状态之间不断循环。

<Client>.on('ready', async () => {
  // ...
  setInterval(async () => {
    client.user.setPresence({ activities: [{ name: `Status1`, type: `PLAYING` }] });
    await wait(5000); // Wait 5 seconds
    client.user.setPresence({ activities: [{ name: `Status2`, type: `PLAYING` }] });
    await wait(5000); // Wait 5 seconds
  });
});

如您所见,有两行是重复的。即:<Client>.user.setPresence(...)await wait(5000)。 wait 函数将阻止状态过早更新自身。您可以通过将秒转换为毫秒(5 秒变为 5000)来编辑设置的时间量。另一部分设置机器人的状态。该类型显示了机器人正在做什么。其有效值为 found in the docs。您可以简单地复制并粘贴这两行并根据需要添加更多状态。