我该如何修复经常更改我的机器人状态的代码?

时间:2020-09-24 11:48:56

标签: node.js typescript discord discord.js

我目前拥有此代码,该代码每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();
});

2 个答案:

答案 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 属性后才会调用赋值。