【问题标题】: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 存在于客户端上。

标签: node.js typescript discord discord.js


【解决方案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 属性中时才会调用赋值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 2020-07-29
    • 2021-04-07
    • 2021-04-15
    • 2022-12-10
    • 2011-04-12
    • 1970-01-01
    相关资源
    最近更新 更多