我目前正在使用discord.js开发一个生日宣布机器人。我想通过使用他们的Discord用户ID来显示用户的化身,然后将其用于嵌入。
当前无法使用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
。
答案 0 :(得分:1)
在尝试了很多解决方案之后,我设法制作了这段代码供我自己使用。
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();
});
答案 1 :(得分:0)
Client.fetchUser()
返回一个Promise。本质上,您必须等待它返回值。您可以使用关键字await
或通过将then()
方法附加到Promise来做到这一点。但是,如果使用catch()
方法或try...catch
语句来拒绝诺言,您还应该捕获任何错误。
我建议阅读this 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
,因为如果未设置用户的头像,它将返回默认的头像网址。