如何修复这个经常改变我的机器人状态的代码?

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 属性中时才会调用赋值。

【讨论】:

以上是关于如何修复这个经常改变我的机器人状态的代码?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用我的机器人修复此“附件不是构造函数”错误?

试图让我的 Discord 机器人响应“我不是婴儿潮一代 >:(”但它不会响应。我该如何修复代码?

让不和谐机器人每 10 秒改变一次播放状态

如何使用机器学习自动修复bug: 上手指南

如何使用机器学习自动修复bug: 上手指南

如何让我的 Discord 机器人每 10 秒更改一次状态?