属性'type'"/>
Discord.js:无法读取未定义的属性'type'
所以,我试图制造一个机器人,在这种情况下,是通道创建/删除命令,没有任何关于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
尝试过自己找到解决方案,但我失败了
[请帮助,我要疯了。
如果需要更多代码,我可以发送。
而且,我的英语不好,我会犯错,请原谅我
回答如下:[在您的第一个代码中,该错误表示channel
中没有message.guild.channels.cache
具有name === ch
,因此fetchedChannel
为undefined
。这是未找到的稳定结果。
在第二个代码中,如果args[1]
是字符串,则试图在不能使用的字符串上使用数组方法join
。
如果有调试器,请使用它来跟踪变量的更改和值。如果您没有,请使用console.log
输出中间值。
清单:
message.content
是否为包含${bot.prefix}vchannel ${args[0]}
的字符串?该行代码只是删除了所有出现的${bot.prefix}vchannel ${args[0]}
,因为您拆分并加入了""
。args[1]
是否是您需要的字符串?
更多推荐
Discord.js:无法读取未定义的属性'type'
发布评论