Javascript 我如何才能获得Minecraft播放器';从NodeJS中的用户名获取UUID?

Javascript 我如何才能获得Minecraft播放器';从NodeJS中的用户名获取UUID?,javascript,node.js,discord.js,minecraft,Javascript,Node.js,Discord.js,Minecraft,我知道有很多其他的帖子都在问同样的问题,但是没有一个帖子能解决我的问题。我正在使用NodeJS和DiscordJS创建一个discord机器人,我需要从Minecraft播放器的用户名中获取UUID,该用户名将作为命令中的参数提供 这是我为此创建的函数,但它似乎不起作用 function getId(playername) { const { data } = fetch(`https://api.mojang.com/users/profiles/minecraft/${args[

我知道有很多其他的帖子都在问同样的问题,但是没有一个帖子能解决我的问题。我正在使用NodeJS和DiscordJS创建一个discord机器人,我需要从Minecraft播放器的用户名中获取UUID,该用户名将作为命令中的参数提供

这是我为此创建的函数,但它似乎不起作用

  function getId(playername) {
    const { data } = fetch(`https://api.mojang.com/users/profiles/minecraft/${args[2]}`)
    .then(data => data.json())
    .then(({ player }) => {
      return player.id;
    });
  }
args[2]
是命令的第三个参数,其格式如下:
id
fetch
是我安装的“node fetch”npm模块的一部分。我在发送命令时调用该函数,它从Mojang的API获取数据,但无法获取UUID。这就是错误:

(node:39416) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'id' of undefined
    at C:\Users\archi\OneDrive\Documents\Programming\Discord Bots\Hypixel Discord Bot\index.js:161:21
    at processTicksAndRejections (internal/process/task_queues.js:94:5)
(node:39416) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:39416) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

它是说它无法读取“id”的属性,如果您使用mojangapi,它是播放器UUID的关键。有什么想法吗?

尝试在请求URL中使用
playername
而不是
args[2]
,并使其返回承诺。也不需要使用
{player}
,因为API返回的对象不具有player专有性。只需使用
player
作为箭头函数的参数

函数getId(playername){
回传(`https://api.mojang.com/users/profiles/minecraft/${playername}`)
.then(data=>data.json())
.then(player=>player.id);
}
然后在代码中这样称呼它:

//使用.then(任意位置)
getId(args[2])。然后(id=>{
log(`ID是${ID}`)
})
//使用wait(异步函数内部)
const id=await getId(args[2])
log(`ID是${ID}`)

尝试在请求URL中使用
playername
而不是
args[2]
,并使其返回承诺。也不需要使用
{player}
,因为API返回的对象不具有player专有性。只需使用
player
作为箭头函数的参数

函数getId(playername){
回传(`https://api.mojang.com/users/profiles/minecraft/${playername}`)
.then(data=>data.json())
.then(player=>player.id);
}
然后在代码中这样称呼它:

//使用.then(任意位置)
getId(args[2])。然后(id=>{
log(`ID是${ID}`)
})
//使用wait(异步函数内部)
const id=await getId(args[2])
log(`ID是${ID}`)

表示返回一个包含对象的数组。您假设它只返回一个对象<代码>返回播放机[0]。id可能。该页面还显示了有效负载的格式。我不确定您是否完全正确。检查您的浏览器“开发工具”“网络”选项卡,找到api调用,并检查参数是否正确。@很遗憾,这不起作用,尽管我知道您来自哪里。在wiki上,有两种不同的方法从名称中获取UUID,一种是POST,另一种是GET,这与JS中的实现方式有什么不同吗?作为参考,声明它返回一个包含对象的数组。您假设它只返回一个对象<代码>返回播放机[0]。id可能。该页面还显示了有效负载的格式。我不确定您是否完全正确。检查您的浏览器“开发工具”“网络”选项卡,找到api调用,并检查参数是否正确。@很遗憾,这不起作用,尽管我知道您来自哪里。在wiki上,有两种不同的方法从名称获取UUID,一种是POST,另一种是GET,这在JS中的实现方式有区别吗?作为参考,仍然得到相同的错误,函数只是不返回anything@ArchieMargretts我已更新答案,请再次检查:)我已再次更新。我忽略了一件能带来巨大变化的小事。仍然会出现同样的错误,函数无法返回anything@ArchieMargretts我已更新答案,请再次检查:)我已再次更新。我忽略了一件能带来巨大变化的小事。