开发者问题收集

错误“未捕获的类型错误:无法读取未定义的属性‘bannable’”[关闭]

2021-05-17
83

您好,我目前正在开发我的 discord 机器人,我在使用 ban 命令时遇到了错误

这是我为 ban 编写的代码

if (message.content.startsWith(prefix + "ban")){
            let mention = message.mentions.members.first();

            if (mention = undefined){
                message.reply("Member not mentionned");
            }
            else {
                if(mention.bannable){
                    mention.ban();
                    message.channel.send(mention + " was banned");
                }
                else {
                    message.reply("Impossible to ban this member");
                }
            }
        }
    }
2个回答

JS 使用 = 分配值,使用 == 检查值或使用 === 检查值和类型:

if (mention == undefined)
    message.reply("Member not mentionned");

或者您可以使用 undefined falsey ,因此:

if (!mention)
    message.reply("Member not mentionned");

如果 mentionnull ,这也将有效。

由于您没有重新分配 mention ,因此我还建议您使用 const ,因为您会收到错误:

const mention = message.mentions.members.first();

if (mention = undefined){ <-- now error throws here
Keith
2021-05-17

您应该使用 mention === undefined ,而不是仅使用一个 = (分配)。

由于空值检查不正确,JS 无法在 mention 内找到未定义的属性 bannable ,因此引发此错误。

Rafael de Freitas
2021-05-17