试图找到一个成员并接收无法读取未定义错误的属性“get”[关闭]

Posted

技术标签:

【中文标题】试图找到一个成员并接收无法读取未定义错误的属性“get”[关闭]【英文标题】:Trying to find a member and receive Cannot read property 'get' of undefined error [closed] 【发布时间】:2021-06-29 15:30:33 【问题描述】:

我有这段代码,它显示了这个错误:“无法读取未定义的属性'get'。”

我该如何解决?有问题的行上面有注释。

module.exports = 
  name: 'mod',
  description: 'Mod command',
  execute(message, args, Discord) 
    const target = message.mentions.users.first();

    const InsufficientPermissions = new Discord.MessageEmbed()
      .setColor('#FF0000')
      .setDescription('Insufficient permissions!');

    if (!message.member.permissions.has('ADMINISTRATOR')) 
      message.channel.send(InsufficientPermissions);
    

    const SpecifyMember = new Discord.MessageEmbed()
      .setColor('#FF0000')
      .setDescription('Please specify a user!');
    const ModAdded = new Discord.MessageEmbed()
      .setColor('#0099ff')
      .setDescription(`Mod was added to <@$target>`);

    // THE LINE BELOW IS THE PROBLEM
    const member = message.member.cache.get(target.id);

    if (!target) 
      message.channel.send(SpecifyMember);
     else 
      member.roles.add('803548878396981258', '816377135887286292');

      message.channel.send(ModAdded);
    
  ,
;

【问题讨论】:

欢迎来到 Stack Overflow。请使用tour 并阅读How to Ask。那篇文章的一个重要部分的标题是“写一个总结特定问题的标题”。当前标题没有。还请edit您的问题包括您对 javascript 中最常见的错误之一所做的任何研究,以及您为自己解决问题所做的任何尝试。 【参考方案1】:

问题是message.member 将消息的作者作为公会成员返回,因此它不会有cache 属性。你可以使用message.guild.members.cache.get()

但是,您可以获得message.mentions.members,而不是message.mentions.users。这样您就不必从用户那里获取成员对象:

module.exports = 
  name: 'mod',
  description: 'Mod command',
  execute(message, args, Discord) 
    const target = message.mentions.members.first();

    const InsufficientPermissions = new Discord.MessageEmbed()
      .setColor('#FF0000')
      .setDescription('Insufficient permissions!');

    if (!message.member.permissions.has('ADMINISTRATOR')) 
      message.channel.send(InsufficientPermissions);
    

    const SpecifyMember = new Discord.MessageEmbed()
      .setColor('#FF0000')
      .setDescription('Please specify a user!');
    const ModAdded = new Discord.MessageEmbed()
      .setColor('#0099ff')
      .setDescription(`Mod was added to <@$target>`);


    if (!target) 
      message.channel.send(SpecifyMember);
     else 
      target.roles.add('803548878396981258', '816377135887286292');

      message.channel.send(ModAdded);
    
  ,
;

【讨论】:

以上是关于试图找到一个成员并接收无法读取未定义错误的属性“get”[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

令牌无效错误:指定的令牌无效:无法读取未定义的属性“替换”?

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

试图在 [vue.js 3] 中创建一个原型来全局访问我的 Api (Axios),但我总是收到此错误:“无法读取未定义的属性”

未捕获(承诺)TypeError:无法读取未定义的属性“长度”

React - 未捕获的类型错误:无法读取未定义的属性“func”

“无法读取未定义的属性 'uid'”错误 - 格子链接令牌