Javascript Discord.js-命令行问题
这是在运行命令Javascript Discord.js-命令行问题,javascript,discord.js,Javascript,Discord.js,这是在运行命令时执行的!bonk@devildog机器人会显示一个gif+@devildog。 但是当您运行命令时!砰一声,机器人就会随机崩溃。是否有任何方法可以通过if else解决此问题? 错误: client.on("message", (message) => { if(message.content.startsWith("!Bonk")){ let userToMention = message.mentions.
时执行的!bonk@devildog
机器人会显示一个gif+@devildog
。
但是当您运行命令时!砰
一声,机器人就会随机崩溃。是否有任何方法可以通过if else
解决此问题?
错误:
client.on("message", (message) => {
if(message.content.startsWith("!Bonk")){
let userToMention = message.mentions.users.first();
message.channel.send("bonks "+userToMention.toString() + " https://tenor.com/view/bonk-meme-dog-doge-gif-14889944");
}
});
再一次你好@Blissy89
是的,您只需使用以下工具即可修复:
message.channel.send("bonks "+userToMention.toString() + "https://tenor.com/view/bonk-meme-dog-doge-gif-14889944");
^
TypeError: Cannot read property 'toString' of undefined
将其置于message.channel.send上方,因为在您的示例中,调用命令不包括任何提及,即调用
message.indications.users.first()代码>将导致崩溃。如果没有提到任何用户(如您的示例中),则first()
方法将无法在users
中找到第一个用户,因为根本没有提到任何用户!因此,对null
/未定义的对象调用toString()
将导致异常
检查初始if
语句中的用户以防止此行为:
if(!userToMention) return message.say('Mention a user to run this command!')
我怀疑如果消息包含0个提及,则消息.indications.users
为空,因此userToMention
为空,并且您不能对其调用toString()
。好的,崩溃问题已解决,但是现在bot停止响应该命令,您应该使用标准的JavaScript调试概念来确定消息.indications.users.array.length
表达式阻止脚本的主要部分运行。
client.on("message", (message) => {
if(message.content.startsWith("!Bonk") && message.mentions.users.array.length > 0){
let userToMention = message.mentions.users.first();
message.channel.send("bonks "+userToMention.toString() + " https://tenor.com/view/bonk-meme-dog-doge-gif-14889944");
}
});