我正在创建一个Discord机器人,该机器人显示Minecraft服务器Hypixel的播放器统计信息。我也在尝试添加其玩家的头像,作为机器人发送的嵌入图片中的缩略图。要获取化身,我正在使用Crafatar。这是我正在使用的代码,但是缩略图未显示在嵌入中。我认为这与以下事实有关:我使用的是其中包含变量的URL,因为我尝试使用常规URL并能正常工作。
.setThumbnail(`https://crafatar.com/avatars/${uuid}.jpg`)
在我的代码中声明了变量uuid
并将其分配给一个更高的值。
编辑1
这是我从中获取uuid
变量的代码。我看不出有什么问题,但是,我不太擅长JavaScript。
var uuid = '';
getId(args[1]).then(id => {
uuid = id;
})
getId
是下面定义的函数,如下所示:
function getId(playername) {
return fetch(`https://api.mojang.com/users/profiles/minecraft/${playername}`)
.then(data => data.json())
.then(player => player.id);
}
这使用Mojang API将播放器的显示名称(作为命令参数输入)转换为其UUID。
答案 0 :(得分:0)
从您发布的内容来看,问题似乎出在以下事实:您正确地使用Promises设置了uuid
的值,但是您没有等待设置之前就对其进行设置您嵌入的缩略图。
您应该使用Promise.then()
(就像在其他地方一样)或async/await
等待它。
这是一个示例:
// Using .then():
getId(args[1]).then(uuid => {
let embed = new MessageEmbed()
// You have to set the thumbnail after you get the actual ID:
embed.setThumbnail(`https://crafatar.com/avatars/${uuid}.jpg`)
// You can now send the embed
})
// Using async/await:
let uuid = await getId(args[1])
let embed = new MessageEmbed()
embed.setThumbnail(`https://crafatar.com/avatars/${uuid}.jpg`)