三行代码  ›  专栏  ›  技术社区  ›  ftc404

DISCORD.JS V13 TypeError:无法读取未定义的属性“has”

  •  1
  • ftc404  · 技术社区  · 2 月前

    我正在做一个bot discord,我试图检查提到的成员是否有权限 但我有一个问题:

    if(member.permissions.has("ADMINISTRATOR")) return message.reply({content: ["no"]})
                          ^
    
    TypeError: Cannot read property 'has' of undefined
    

    const { Client, Message } = require("discord.js");
    
    module.exports = {
        name: "user",
        description: "comando a risposta",
        aliases: ["boop", "test"],
        /** 
         * @param {Client} client 
         * @param {Message} message 
         * @param {String[]} args 
         */
        run: async (client, message, args) => {
            const member = message.mentions.users.first();
            if(member.permissions.has("ADMINISTRATOR")) return message.reply({content: ["he has the admin"]})
            message.reply(`${member.tag}`)
        }
    }
    

            const member = message.mentions.members.first()
            if(member.permissions.has("ADMINISTRATOR")) {
                message.reply(`${member.tag} ha l'admin`)
            }
            if(!member.permissions.has("ADMINISTRATOR")) {
                message.reply(`${member.tag} non ha l'admin`)
    
    

    谢谢大家

    3 回复  |  直到 2 月前
        1
  •  1
  •   MrMythical    2 月前

    你得到了一份工作 User .permissions . 得到 GuildMember message.mentions.members.first()

    const member = message.mentions.members.first()
    

    使用者 s和s不一样 行会成员 s:看到了吗 What is the difference between a User and a GuildMember in discord.js?

        2
  •  1
  •   AkhanIskak    2 月前

        3
  •  1
  •   Fin HARRIS    2 月前

    好的,所以本质上这条消息是说discord.js没有意识到消息中提到了一个用户。如果users集合为空,则.first()方法返回undefined。所以我建议,如果消息中没有提到任何人,那么处理成员可能是未定义的。

    const member = message.mentions.users.first();
    
    if (member === undefined) return message.reply({content: ["no user mentioned"]})
    
    if(member.permissions.has("ADMINISTRATOR")) return message.reply({content: ["he has the admin"]})
    message.reply(`${member.tag}`)
    
        4
  •  0
  •   ftc404    2 月前
    const { Client, Message } = require("discord.js");
    
    module.exports = {
        name: "user",
        description: "comando a risposta",
        aliases: ["boop", "test"],
        /** 
         * @param {Client} client 
         * @param {Message} message 
         * @param {String[]} args 
         */
        run: async (client, message, args) => {
            const member = message.mentions.members.first()
            if(member.permissions.has("ADMINISTRATOR")) {
                message.reply(`${member.tag} ha l'admin`)
            }
            if(!member.permissions.has("ADMINISTRATOR")) {
                message.reply(`${member.tag} non ha l'admin`)
            }
        }