Discord.js:无法读取未定义的属性“类型”

时间:2020-05-09 08:15:28

标签: node.js discord.js

因此,我尝试制作一个机器人,在本例中为channel create / delete命令,没有任何js知识(对此我非常讨厌),并且运行不正常

代码如下:

}else if (args[0] === "delete") {
      console.log('deleting')
      let ch = message.content.split(`${bot.prefix}vchannel ${args[0]}`).join('')
      let fetchedChannel = message.guild.channels.cache.find(r=>r.name === ch)
      if (fetchedChannel.type === "voice") {
        fetchedChannel.delete()
      message.channel.send(`Голосовой канал ${ch} удален`).then(msg=>msg.delete({timeout:5000}))
      console.log('delete complete')
      }
    }
    }

有错误:

(node:5216) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'type' of undefined

我试图删除ch

}else if (args[0] === "delete") {
      console.log('deleting')
      let fetchedChannel = message.guild.channels.cache.find(r=>r.name === args[1].join(''))
      if (fetchedChannel.type === "voice") {
        fetchedChannel.delete()
      message.channel.send(`Голосовой канал ${args[1].join('')} удален`).then(msg=>msg.delete({timeout:5000}))
      console.log('delete complete')
      }
    }
    }

但出现其他错误:

TypeError: args[1].join is not a function

试图自己找到解决方案,但我失败了

请帮助,我要疯了。

如果需要更多代码,我可以发送。

此外,我的英语不好,我会犯错,请原谅我。

1 个答案:

答案 0 :(得分:0)

在您的第一个代码中,错误表示channel中没有message.guild.channels.cache的{​​{1}},因此name === chfetchedChannel。这是未找到的稳定结果。

在第二个代码中,如果undefined是一个字符串,则您试图在不能为字符串的字符串上使用Array方法args[1]

如果您有调试器,请使用它来跟踪变量更改和值。如果您没有,请使用join输出中间值。

清单:

  • console.log是包含message.content的字符串吗?该行代码只是删除了每次出现的${bot.prefix}vchannel ${args[0]},因为您拆分并加入了${bot.prefix}vchannel ${args[0]}

  • ""是您需要的字符串吗?