Команда аватара в discord.js не собирает упоминания - PullRequest
0 голосов
/ 08 ноября 2019

эта тема не решила мою проблему, поэтому я снова спрашиваю. Я пытаюсь создать команду аватара discord.js, и упомянутая часть не работает правильно

, когда я использую команду аватара без упоминания пользователя, он отображает мой аватар по назначению, нокогда я упоминаю пользователя, он говорит "неопределенный аватар" и не показывает аватар

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 Ответ

1 голос
/ 08 ноября 2019

Когда вы определяете член в let member = msg.mentions.members.first(), вы работаете с классом GuildMember, когда вы определяете его через let member = msg.author, вы работаете с классом User. Обязательно проверьте в документации , с которой вы работаете.

Теперь, когда вы получаете член из списка, значения 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)
}
...