Discord.js 机器人随机出现和状态在机器人启动时不显示也不改变
Discord.js bot random presence and status not showing nor changing when the bot starts
我一直在尝试使用每 15 分钟更改一次的 Discord.js v13 来制作随机机器人 presence/status。我的代码面临的问题是,当我第一次启动机器人时,自定义状态和存在不显示,我必须等待 15 分钟才能显示并开始更改。
代码如下:
client.on("ready", async () => {
let servers = await client.guilds.cache.size
let servercount = await client.guilds.cache.reduce((a,b) => a+b.memberCount, 0 )
const statusArray = [
{
type: 'WATCHING',
content: `${servers} servers`,
status: 'online'
},
{
type: 'PLAYING',
content: `with my ${servercount} friends`,
status: 'online'
}
];
async function pickPresence() {
const option = Math.floor(Math.random() * statusArray.length);
try {
await client.user.setPresence({
activities: [
{
name: statusArray[option].content,
type: statusArray[option].type,
url: statusArray[option].url
},
],
status: statusArray[option].status
});
} catch (error) {
console.error(error);
}
}
setInterval(pickPresence, 1000*60*15);
});
关于为什么当我启动机器人时它不能立即工作有什么想法吗?
setInterval
实际上是在第一次执行函数中的代码之前等待指定的延迟(15 分钟)。因此,您需要做的就是在 setInterval
.
之前的行中添加 pickPresence()
pickPresence();
setInterval(pickPresence, 1000*60*15);
我一直在尝试使用每 15 分钟更改一次的 Discord.js v13 来制作随机机器人 presence/status。我的代码面临的问题是,当我第一次启动机器人时,自定义状态和存在不显示,我必须等待 15 分钟才能显示并开始更改。
代码如下:
client.on("ready", async () => {
let servers = await client.guilds.cache.size
let servercount = await client.guilds.cache.reduce((a,b) => a+b.memberCount, 0 )
const statusArray = [
{
type: 'WATCHING',
content: `${servers} servers`,
status: 'online'
},
{
type: 'PLAYING',
content: `with my ${servercount} friends`,
status: 'online'
}
];
async function pickPresence() {
const option = Math.floor(Math.random() * statusArray.length);
try {
await client.user.setPresence({
activities: [
{
name: statusArray[option].content,
type: statusArray[option].type,
url: statusArray[option].url
},
],
status: statusArray[option].status
});
} catch (error) {
console.error(error);
}
}
setInterval(pickPresence, 1000*60*15);
});
关于为什么当我启动机器人时它不能立即工作有什么想法吗?
setInterval
实际上是在第一次执行函数中的代码之前等待指定的延迟(15 分钟)。因此,您需要做的就是在 setInterval
.
pickPresence()
pickPresence();
setInterval(pickPresence, 1000*60*15);