TypeError:无法读取未定义的属性“缓存”-需要修复

时间:2020-04-11 18:29:31

标签: javascript discord.js

我做了一个用户信息命令,我想展示的一件事是成员的角色。但是出于某种奇怪的原因,我得到了TypeError: Cannot read property 'cache' of undefined

请帮助我,下面列出了我的代码以供参考。谢谢!

case 'whois': {
  const embed = new Discord.MessageEmbed()
  var user = message.mentions.users.first()            
  if(!args[1]) return message.reply('Apologies! Please specify a particular member!');

  embed.setTitle('User Information')
  embed.addField('Username', user.username)
  embed.addField('User ID', user.id)
  embed.addField('User Tag', user.tag)
  embed.addField('Roles:', user.roles.cache.map(r =>`${r}`).join(' | '))
  embed.addField('Created at:', user.createdAt)             
  embed.setColor(0x00FF93)
  embed.setThumbnail(user.avatarURL())
  embed.setFooter('Generated by Salty!')
  message.channel.send(embed);
  break;
}

2 个答案:

答案 0 :(得分:0)

这是因为user.roles未定义。

通过将“角色”行更改为以下内容,可以使用安全的后备广告:

embed.addField('Roles:', user.roles ? user.roles.cache.map(r =>`${r}`).join(' | ') : '')

答案 1 :(得分:0)

这是因为用户没有角色。只有公会会员可以。如果要获取第一个提到的成员,请使用message.mentions.members.first()。用户代表世界各地的不和谐用户,而GuildMembers是特定行会的成员。