无法读取null的属性“ hasPermission”

时间:2020-08-07 18:56:14

标签: javascript discord bots discord.js

在开始之前,我想先说一下,我绝不是开发人员/脚本作者/编码人员,或者任何您想称呼的人。无论如何,我试图发出一个踢命令,它有效,但是它说:Cannot read property 'hasPermission' of null.而且我担心它会让任何人踢人,即使它还没有发生,那就是看起来像什么。这是代码:

client.on('message', message => {
    if(message.member.hasPermission("KICK_MEMBERS"))
        if(message.content.startsWith(`${prefix}kick`)) {
            let member = message.mentions.members.first();
            member.kick().then(member)
                message.channel.send(member.displayName + " was kicked.")
        }
})

1 个答案:

答案 0 :(得分:1)

您正在hasPermission上呼叫message.member。这表明message.membernull,至少在某些时候被称为。

您可以尝试更改为:

    if(message.member && message.member.hasPermission("KICK_MEMBERS")) {

,这应确保message.member具有一个值,然后再尝试对其取消引用。如果没有member,那么它什么也不会做。

我不确定不一致的API的工作方式,因此我不知道这是否处于预期状态(或者member是要查看的正确字段),所以如果这一直在发生,那么您应该确保这是正确的。

此外,我怀疑这是错误的:

            member.kick().then(member)
                message.channel.send(member.displayName + " was kicked.")

,可能应该是:

            member.kick().then(member => 
                message.channel.send(member.displayName + " was kicked."));