Discord.js-命令行问题

时间:2020-09-10 18:28:23

标签: javascript discord.js

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

2 个答案:

答案 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