【问题标题】:Making a Discord bot assign a role after a certain time from the member join date?让 Discord 机器人在成员加入日期后的特定时间后分配角色?
【发布时间】:2022-06-20 16:13:51
【问题描述】:

我不知道如何让我的不和谐机器人能够在加入日期后的特定时间后分配角色。有人建议我使用 node-cron,但我不知道如何正确实现它,因为机器人似乎忽略了代码。有什么想法吗?

【问题讨论】:

    标签: discord discord.js


    【解决方案1】:

    你可以使用setTimeout,例如你可以这样使用:

    client.on("guildMemberAdd", member => {
        setTimeout(() => {
            // Add role to member
        }, 1000 * 60 /* Time in ms here */);
    });
    

    更多关于setTimeout的信息

    【讨论】:

      【解决方案2】:

      最好的方法是保存加入日期,如果join date - current date >= necessary time,则在另一个循环的 cron 中修改。

      我推荐这种方式,因为如果你使用setTimeout或类似的方法,当你的机器人关闭时,这个动作会丢失,永远不会执行。

      为此,您需要将这些数据存储在外部(在数据库中,甚至在文本文件中)。

      【讨论】:

      • 我同意这个答案。延迟时间较长的非持久解决方案将不可行。
      【解决方案3】:

      这完全取决于他们需要在公会中待多长时间,如果说几分钟左右,那么上述两个答案都可以工作(如果他们展示了如何工作可能会有所帮助)否则 cron 工作效果很好,不要进入任何事件监听器。因此,您可以将其添加到主 bot.js 文件中。

      密钥 - 对于其他方法,您可以使用此 site 来构建您的密钥

      every min = '*/1 * * * *'
      every hour = '0 */1 * * *'
      every day @ midnight = '0 0 * * *'
      
      const cron = require('node-cron');
      // as example runs every min
      cron.schedule('*/1 * * * *', function () {
          const guild = client.guilds.cache.get(guildID);
          guild.memmbers.cache.fetch().forEach(member => {
              if (member.roles.cache.has(roleID)) {
                  return;
              } else {
                  // 2 months as an example is 5259600000
                  if (member.joinedTimestamp - new Date().getTime() >= 5259600000) {
                      member.roles.add(roleID)
                  }
              }
          })
      });
      

      【讨论】:

        【解决方案4】:

        我使用了类似的代码来获取用户。但得到以下错误。你能解释一下我错过了什么吗?

                const guild = client.guilds.cache.get('<ID>');
                guild.memmbers.cache.fetch().forEach(member => {
        
                    console.log(member)
                });
        
        guild.memmbers.cache.fetch().forEach(member => {
                      ^
        
        TypeError: Cannot read properties of undefined (reading 'memmbers')
        

        【讨论】:

          猜你喜欢
          • 2021-03-14
          • 2018-10-11
          • 2021-08-14
          • 2020-12-11
          • 2019-08-26
          • 2021-05-10
          • 2019-06-26
          • 2020-12-30
          • 2021-03-17
          相关资源
          最近更新 更多