此线程没有解决我的问题,这就是为什么我再次询问。 I am trying to make a discord.js avatar command, and the mentioning portion doesn't work correctly
当我使用我的头像命令而未提及用户时,它会按预期显示我的头像,但是当我提及一个用户时,它会显示“未定义的头像”并且未显示头像
module.exports.run = async (Client, msg, args) => {
let member = msg.mentions.members.first() || msg.author
let embed = new Discord.RichEmbed()
.setTitle(`${member.username}'s Avatar`)
.setImage(member.avatarURL)
.setColor(0x233f23);
msg.channel.send(embed)
}
它似乎没有找到提到的用户,但我不知道为什么
在我用过
if (!member) member = msg.author
但是那仍然给我带来了同样的问题,因此我从上面链接的线程中应用了修复程序,并且仍然是同一件事。
答案 0 :(得分:1)
在let member = msg.mentions.members.first()
中定义成员时,您正在使用类GuildMember
,而在let member = msg.author
中定义成员时,您正在使用类User
。确保检查documentation的工作范围。
现在,当您从提及中获得成员时,username
和avatarURL
均为空,因为这些属性在成员类中不存在,例如,要获取用户的用户名,您首先需要像这样进入user
中的GuildMember
属性,let username = member.user.username
您也可以获取成员昵称,女巫是Member
中存在的属性。>
完成所有这些之后,这是您的代码,其中包含我刚才描述的修复程序:
module.exports.run = async (Client, msg, args) => {
let member = msg.mentions.members.first() || msg.member // Changed from msg.author so that we can work with the same class in both cases
let embed = new Discord.RichEmbed()
.setTitle(`${member.user.username}'s Avatar`)
.setImage(member.user.avatarURL)
.setColor(0x233f23);
msg.channel.send(embed)
}