如何修复这个经常改变我的机器人状态的代码?
Posted
技术标签:
【中文标题】如何修复这个经常改变我的机器人状态的代码?【英文标题】:How do I fix this code that changes my bot's status every so often? 【发布时间】:2021-01-10 17:00:08 【问题描述】:我目前有此代码每 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();
);
【问题讨论】:
它会根据您的setInterval
每 15 秒通过特定活动(非随机)将机器人状态更改为“空闲”。您想再次修复什么?
user!
无效。每 15 秒更改一次状态也可能属于 Discord API 垃圾邮件
@Elitezen user!
是有效的,因为这是打字稿而不是 javascript。此外,user
存在于客户端上。
【参考方案1】:
首先,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);
【讨论】:
这是打字稿,不是javascript,所以我必须在user
之后使用非空赋值运算符,或!
。【参考方案2】:
将您的代码粘贴到我的项目中时它工作正常,尽管我的 vs 代码开始抱怨使用“而不是”。这是因为 ESLint 规则。除此之外,您是否等待超过 15 秒才能更新?使用 setInterval 函数,它需要完成第一次函数调用之前的时间。
此外,您的 rand 变量不会每 15 秒更新一次,因为只有在您可以将这一行 names[Math.floor(Math.random() * names.length)]
放在 name 属性中时才会调用赋值。
【讨论】:
以上是关于如何修复这个经常改变我的机器人状态的代码?的主要内容,如果未能解决你的问题,请参考以下文章