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");
}
});
这是当您运行命令!bonk @devildog
时,机器人会显示gif + @devildog
。
但是,当您单独运行命令!bonk
时,该漫游器会随机崩溃。您可以使用if else
解决任何问题吗?
错误:
message.channel.send("bonks "+userToMention.toString() + "https://tenor.com/view/bonk-meme-dog-doge-gif-14889944");
^
TypeError: Cannot read property 'toString' of undefined
答案 0 :(得分:1)
由于在您的示例中,调用命令不包含任何提及,因此对message.mentions.users.first();
的调用将导致崩溃。当没有提及用户时(如您的示例),first()
方法将无法在users
中找到第一个用户,因为根本没有提及用户!因此,在toString()
/ null
对象上调用undefined
会导致异常。
在您的初始if
语句中检查用户,以防止此行为:
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");
}
});
答案 1 :(得分:0)
你好,@ Blissy89!
是的,您可以通过以下方式解决此问题:
if(!userToMention) return message.say('Mention a user to run this command!')
置于上方 message.channel.send