【问题标题】:Discord.js Bot StatusDiscord.js 机器人状态
【发布时间】:2022-01-07 16:24:22
【问题描述】:
不,我不是在问如何设置我的机器人的状态。我在问如何让我的机器人的状态每 5-7 秒更改一次。我该怎么做:
client.user.setActivity(`dsc.gg/ultraa | ?help | ${client.guilds.cache.size} servers`, { type: 'WATCHING' });
每隔几秒更改一次,例如“外面很冷”、“420 个服务器”和“?help | dsc.gg/ultraa”。我如何让这些状态在彼此之间轮换?
【问题讨论】:
标签:
discord
discord.js
bots
status
【解决方案1】:
注意:此代码适用于 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)。等待功能将阻止状态过早更新自身。您可以通过将秒转换为毫秒(5 秒变为 5000)来编辑设置的时间量。另一部分设置机器人的状态。类型显示机器人正在做什么。其有效值为found in the docs。您可以简单地复制并粘贴这两行并根据需要添加更多状态。