discord.js中的头像命令未收到提及

时间:2019-11-08 14:40:52

标签: javascript discord discord.js

此线程没有解决我的问题,这就是为什么我再次询问。 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

但是那仍然给我带来了同样的问题,因此我从上面链接的线程中应用了修复程序,并且仍然是同一件事。

1 个答案:

答案 0 :(得分:1)

let member = msg.mentions.members.first()中定义成员时,您正在使用类GuildMember,而在let member = msg.author中定义成员时,您正在使用类User。确保检查documentation的工作范围。

现在,当您从提及中获得成员时,usernameavatarURL均为空,因为这些属性在成员类中不存在,例如,要获取用户的用户名,您首先需要像这样进入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)
}