TypeError:无法读取未定义的属性“hasPermission”

Posted

技术标签:

【中文标题】TypeError:无法读取未定义的属性“hasPermission”【英文标题】:TypeError: Cannot read property 'hasPermission' of undefined 【发布时间】:2020-10-07 17:39:03 【问题描述】:

我正在制作一个 discord 机器人,我主要学习了 discord.js 的 v11,当我在 discord 中创建一个 unban 命令时,当我完成时,我运行了该命令,它给出了错误“TypeError:Cannot读取未定义的属性“hasPermission”,这是我的代码。 顺便说一句,它是一个命令处理程序

module.exports = 
    name : 'unban',
    execute(client, message, args)
       if(!message.member.hasPermission(["BAN_MEMBERS"])) return message.channel.send("You dont have permission to perform this command!")
    if(isNaN(args[0])) return message.channel.send("You need to provide an ID.")
    let bannedMember =  client.users.fetch(args[0])
        if(!bannedMember) return message.channel.send("Please provide a user id to unban someone!")

    let reason = args.slice(1).join(" ")
        if(!reason) reason = "No reason given!"

    if(!message.guild.me.hasPermission(["BAN_MEMBERS"])) return message.channel.send("I dont have permission to perform this command!")|
    message.delete()
    try 
        message.guild.members.unban(bannedMember, reason)
        message.channel.send(`**$bannedMember.tag** has been unbanned from the guild!`)
     catch(e) 
        console.log(e.message)
    





No idea what the problem is.

【问题讨论】:

记录message.guild 是什么并添加显示结果的代码块 【参考方案1】:

看起来message.guild.me.hasPermissionmessage.member.hasPermission 都是有效的方法。您确定已定义 message 变量吗?检查您的命令处理程序。

【讨论】:

已定义,问题是.me未定义,而messagemessage.guild已定义 也许你可以试试var me = message.guild.members.cache.get(client.user.id);,然后用me替换message.guild.me

以上是关于TypeError:无法读取未定义的属性“hasPermission”的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:无法读取未定义的属性“findAll”(expressjs)

TypeError:无法读取未定义的属性(读取“问题”)

TypeError:无法读取未定义的属性“babel”

TypeError:无法读取未定义的属性(读取“匹配”):

TypeError:无法读取未定义的属性“存在”

TypeError:无法在 gitlab 中读取未定义的属性(读取“读取”)