因此,我尝试制作一个机器人,在本例中为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
试图自己找到解决方案,但我失败了
请帮助,我要疯了。
如果需要更多代码,我可以发送。
此外,我的英语不好,我会犯错,请原谅我。
答案 0 :(得分:0)
在您的第一个代码中,错误表示channel
中没有message.guild.channels.cache
的{{1}},因此name === ch
是fetchedChannel
。这是未找到的稳定结果。
在第二个代码中,如果undefined
是一个字符串,则您试图在不能为字符串的字符串上使用Array方法args[1]
。
如果您有调试器,请使用它来跟踪变量更改和值。如果您没有,请使用join
输出中间值。
清单:
console.log
是包含message.content
的字符串吗?该行代码只是删除了每次出现的${bot.prefix}vchannel ${args[0]}
,因为您拆分并加入了${bot.prefix}vchannel ${args[0]}
。
""
是您需要的字符串吗?