【问题标题】:How do i make so that my bot changes status every 10 seconds?如何让我的机器人每 10 秒更改一次状态?
【发布时间】:2021-01-13 11:08:57
【问题描述】:

这是我的代码,有人说我应该使用Math.floor,但我不知道具体应该放在哪里

bot.user.setActivity({ name: 'Arth agora em JavaScript~', type: 'PLAYING' })
});

【问题讨论】:

  • 您的 sn-p 语法无效。要设置重复发生的事情,您可能应该使用 setInterval:developer.mozilla.org/en-US/docs/Web/API/…
  • 每十秒更改一次状态会破坏 Discord TOS
  • 添加到@Octogonal T,让您的机器人每 Y 秒执行任何 X 操作被视为 API 垃圾邮件

标签: javascript discord discord.js bots


【解决方案1】:

您可以更改机器人活动/状态

const activities_list = [
    "RANDOM", 
    "help",
    "Random Status"
]; 

setInterval(() => bot.user.setActivity(activities[Math.floor(Math.random() * activities_list.length)]), 10000);

【讨论】:

    【解决方案2】:

    您将需要一系列不同的活动,您可以插入任意数量的活动。

    setInterval 每十秒(指定为 10000 毫秒)执行一次箭头函数内的代码。箭头函数内的代码会从数组中随机选择一个活动。

    const activities = [
        { name: 'Arth agora em JavaScript~', type: 'PLAYING' },
        { name: 'Another activity', type: 'PLAYING' }
    ];
    
    setInterval(() => bot.user.setActivity(activities[Math.floor(Math.random() * activities.length)]), 10000);
    

    【讨论】:

      【解决方案3】:

      您可以使用递归的 setTimeout(比 setInterval 更好),它将在您想要的每一时间执行,并且不会导致任何类型的内存泄漏。

      function Foo(){
          // your code here
      
         setTimeout(Foo, 5000); // you can define your function and the amount of time here
      
      }
      
      Foo();
      

      我不太确定您的请求,但您希望机器人的状态每 x 秒更改一次,您可以在代码中应用您的概念并使用 Math.random() 生成随机具有此类功能的数字:

      function getRandomInt(min, max) {
         return Math.floor(Math.random() * (max - min)) + min;
      }
      

      Math.floor() 仅将数字四舍五入到最接近的整数。

      所以最后,你可以结合这两个代码得到这个:

      function getRandomInt(min, max) {
         return Math.floor(Math.random() * (max - min)) + min;
      }
      
      
      function updateStatus(){
          bot.user.setActivity({ name: 'Random Status : ' + getRandomInt(1, 200), type: 'PLAYING' })
          });
      
         setTimeout(updateStatus, 5000); // you can define your function and the amount of time here
      
      }
      
      updateStatus();
      

      但是,我会建议您构建一个更复杂的结构,例如客户端-服务器,以每次刷新数据包,但我什至不知道您的整个代码。

      【讨论】:

        【解决方案4】:

        使用setInterval():

        setInterval(function () {
            bot.user.setActivity({ name: 'Arth agora em JavaScript~', type: 'PLAYING' });
        }, 10000); // 10 000 miliseconds = 10 seconds
        

        【讨论】:

          猜你喜欢
          • 2018-12-13
          • 2021-06-10
          • 2018-02-26
          • 1970-01-01
          • 2020-07-29
          • 1970-01-01
          • 2013-05-25
          • 2021-08-29
          • 2012-05-09
          相关资源
          最近更新 更多