TypeError: не удается прочитать свойство ‘displayAvatarURL’ из undefined: выдает эту ошибку при попытке выполнить пинг другого человека, чтобы получить его аватар

#javascript #discord.js #undefined

#javascript #discord.js #не определено

Вопрос:

     } else if (command === 'avatar') {
        const target = message.mentions.users.first();
       
        if (target) {
            const userTarget = message.guild.members.cache.get(target.id);
            message.channel.send(message.userTarget.displayAvatarURL());
        } else if (!target) {
            message.channel.send(message.author.displayAvatarURL());
        } 
     }
 });    
 

Оператор else if работает нормально, но когда есть человек, который собирается получить аватар этого человека, он просто не работает.

Комментарии:

1. Привет, новичок… В вашем вопросе отсутствует так много информации. Например: что такое message объект? Пожалуйста, загрузите все соответствующие файлы. И проверьте правила этого форума, чтобы узнать, как задать хороший вопрос здесь

2. Ваш объект message не имеет свойства author, как вы предполагали в своем коде. Вот почему вы получаете ошибку. Можете ли вы опубликовать console.log свой объект message?

3. Я стремлюсь пинговать другого человека для его аватара, поэтому мне не нужно свойство author вместо свойства фактической цели. Это нормально, другой уже ответил.

Ответ №1:

Сообщение не имеет userTarget свойства. Если вы хотите получить URL-адрес аватара цели member , затем обратитесь к user свойству возвращаемого member и вызовите там метод отображения:

userTarget.user.displayAvatarURL()

В качестве альтернативы, в вашей target переменной уже хранится целевой пользователь, поэтому вам не нужно получать его объект-член и сохранять его в userTarget нем. Вы можете просто вызвать:

target.displayAvatarURL()

Комментарии:

1. Когда я это сделаю } else if (command === ‘avatar’) { const target = message.mentions.users.first(); if (target) { const userTarget = message.guild.members.cache.get(target.id ); сообщение.канал.отправить (message.target.displayAvatarURL()); } else if (!target) { message.channel.send(message.author.displayAvatarURL()); } } }); Я получаю displayAvatarURLof неопределенный

2. @A5TR0N0MICZ Не делай message.target.displayAvatarURL() этого. Просто используй target.displayAvatarURL() . Это объект, который хранит ваша target переменная. Как вы можете видеть по ссылке, у него есть displayAvatarURL() метод.