【问题标题】:Trying to get the most inactive members from my guild试图从我的公会中获得最不活跃的成员
【发布时间】:2021-08-20 21:15:07
【问题描述】:

我正在使用 javascript 和 discord.js v12 n 尝试创建 !inactive cmd,它会从我的服务器中获取最不活跃的成员,然后将它们静音。当我尝试console.log(member) 时,它显示“未定义”请帮忙。

代码:

    module.exports = {
    name: "inactive",
    description: "no",
    async execute(message, args, command, client, Discord) {
        if (!message.member.roles.cache.find(r => r.name === "Isäntä")) return message.channel.send("No perms")

        let userit = new Map()
        let time = ['21600000', '10800000', '7200000', '3600000', '14400000', '18000000']; //1-6h
        let muterole = message.guild.roles.cache.find(r => r.name === 'Muted') //mute role

        message.guild.members.cache.forEach(member => {
            if(member.roles.highest != message.guild.roles.cache.get("706922406257754132")) return;
            userit.set(member.id, member)
        });
       if(userit.size == 0) return message.channel.send("None of users met requirements")
        const inactiveOnes = new Map()
        userit.forEach(member => { 
            if (!member.lastMessage) return inactiveOnes.set(member.id, member)
            if (member.lastMessage.createdTimestamp <= Date.now() - 1209600000) return;
            inactiveOnes.set(member.id, member)
        });
        if(inactiveOnes.size == 0) return message.channel.send("None of users met requirements")
        let random = Math.floor(Math.random() * 4)+1 
        let random_time = time[Math.floor(Math.random() * time.length)]
        
        for(let i = 0; i < random; i++ ){
          const keys = inactiveOnes.keys();
          let random2 = Math.floor(Math.random() * keys)
          const member = keys[random2];
          console.log(member)
          console.log(keys)
         // member.roles.add(muterole.id) 
          message.channel.send(`${member} you have been muted for being inactive! (Time: ${random_time}ms)`)
          setTimeout(() => {
         //   member.roles.remove(muterole.id)
            message.channel.send(`${member} you have been unmuted!`) 
          }, random_time)
        }
    }
} 

【问题讨论】:

    标签: javascript discord.js undefined member


    【解决方案1】:

    您错过了底部 for 循环中的 .length

    const keys = inactiveOnes.keys(); 
    let random2 = Math.floor(Math.random() * keys.length);
    const member = keys[random2];
    console.log(member) console.log(keys)
    

    没有.lengthrandom2 设置为NaN,导致问题。

    【讨论】:

      【解决方案2】:

      正如 theusaf 所说,您在获取随机数时错过了 .length

      const random2 = Math.floor(Math.random() * keys.length);
      

      但是,即使您得到一个号码,member 仍将是 undefined。这是因为inactiveOnes.keys() 不返回数组,而是返回MapIterator。如果您想使用数组功能,您可以做以下两件事之一。

      // 1:
      const keys = inactiveOnes.keyArray();
      
      // 2:
      const keys = [...inactiveOnes.keys()];
      

      【讨论】:

      • 谢谢Lioness100,不过,我不需要任何帮助,它已经修复了。
      猜你喜欢
      • 1970-01-01
      • 2019-06-11
      • 2021-02-26
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      • 2021-08-18
      • 1970-01-01
      • 2017-10-08
      相关资源
      最近更新 更多