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");
    }

});