我目前拥有此代码,该代码每15秒更改一次他的自定义状态,但是现在我的机器人的状态没有显示,并且表明他处于在线状态而不是空闲状态。我发现没有任何效果,因为大多数其他人都使用了与我不同的格式来设置状态。我该怎么做才能改变这一点?
client.on("ready", async () => {
console.log("Ready!");
const names = ["with Archigan and Terrain", "probably Risk of Rain 2"];
const rand = names[Math.floor(Math.random() * names.length)];
setInterval(
() =>
client.user!.setPresence({
activity: {
type: "PLAYING",
name: rand,
},
status: "idle",
}),
1000 * 15
);
await reloadCommands();
});
答案 0 :(得分:0)
首先,client.user!.setPresence()应该是client.user.setPresence()
也是,这是我的代码,可以正常工作
let activityOptions = [
`${client.guilds.cache.size} servers and ${client.guilds.cache.reduce(
(a, g) => a + g.memberCount,
0
)} members!`,
`${client.nerdwars.randomKey(1)}`,
`${client.commands.size} commands!`,
`s.help!`
];
setInterval(() => {
client.user.setPresence({
status: 'online',
activity: {
name:
activityOptions[Math.floor(Math.random() * activityOptions.length)],
type: 'WATCHING'
}
});
}, 5000);
答案 1 :(得分:0)
将您的代码粘贴到我的项目中时,它工作正常,尽管我的 vs 代码开始抱怨使用“而不是 '。这是因为 ESLint 规则。除此之外,您是否等待了 15 秒以上才能更新?什么时候?使用 setInterval 函数,它需要在执行第一次函数调用之前完成时间。
此外,您的 rand 变量不会每 15 秒更新一次,因为只有在您将此行 names[Math.floor(Math.random() * names.length)]
放入 name 属性后才会调用赋值。