如何将缩略图添加到Discord嵌入物中?

时间:2020-06-01 17:47:59

标签: discord.js

我正在创建一个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。

1 个答案:

答案 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`)