В настоящее время я разрабатываю бота, объявляющего день рождения, используя discord.js. Я хотел показать аватар пользователя, используя его идентификатор пользователя Discord, чтобы затем использовать его во встраивании.
Использование client.fetchUser('[userID]').avatarURL в настоящее время не работает.
const exampleEmbed = new Discord.RichEmbed()
.setColor('#0099ff')
.setAuthor('? Birthday Announcement:')
.setThumbnail(cleint.fetchUser('[userID]').avatarURL)
.setDescription('? Happy day of birth [user ID]! ?')
.setFooter('May 25');
client.on('message', message => {
if (message.content.toLowerCase().startsWith('f.test')) {
message.channel.send(exampleEmbed);
}
});
Он отправит вставку без изображения, но после этого каждые несколько секунд будет давать throw er.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Client.fetchUser() возвращает Обещать. По сути, вам нужно дождаться, пока он вернет значение. Вы можете сделать это, используя ключевое слово await или присоединив к обещанию метод then(). Однако вы также должны перехватывать любые ошибки в случае отклоненного обещания с помощью метода catch() или инструкции try...catch.
Я бы посоветовал прочитать документацию это MDN, чтобы узнать больше об асинхронном программировании в JavaScript.
Пример 1:
// This needs to be inside of an async function to use 'await'
const { displayAvatarURL } = await client.fetchUser('id')
.catch(console.error);
embed.setThumbnail(displayAvatarURL);
Пример 2:
client.fetchUser('id')
.then(user => {
const embed = new Discord.RichEmbed()
.setThumbnail(user.displayAvatarURL);
})
.catch(console.error);
В этих примерах я использую displayAvatarURL, потому что он вернет URL-адрес аватара по умолчанию, если пользователь не установил свой собственный.
Перепробовав множество решений, мне удалось сделать этот код для собственного использования.
const client = new Discord.Client();
let thanos = client.users.fetch('IDHERE');
thanos.then(function(result1) {
//put your code that uses the result1 (the user object) here
//for example, you could do var imgURL = result1.displayAvatarURL();
});
Что за исключение?