【问题标题】:Discord.js | Displaying a username from an ID returns undefined不和谐.js |显示来自 ID 的用户名返回 undefined
【发布时间】:2021-09-14 14:49:52
【问题描述】:

我目前正在更改我的服务器的排行榜命令以显示在画布上,而不是嵌入上。我遇到的一个问题是,由于它不是嵌入的,因此抓取用户的 ID 然后用<@userid> 显示他们的用户名不再有效,代码只是将 ID 作为纯文本返回。我正在寻找解决此问题的解决方案。这是我现在拥有的代码:

for (var i in money) {
    let user = client.users.cache.get(`${money[i].ID.slice(25)}`);

    finalLb += `${money.indexOf(money[i])+1} ${user} \`${money[i].data} credits\`\n`;
    console.log(user)
  }

代码结果

当我通过控制台记录用户变量时,我会得到他们的所有信息,包括用户名。

我尝试了 user.username,但收到错误 Cannot read property 'username' of undefined。我在这一点上有点卡住,任何帮助表示赞赏。谢谢!

【问题讨论】:

    标签: javascript node.js discord discord.js leaderboard


    【解决方案1】:

    如果user 被定义,user.username 确实有效。通过检查您的第一张图片,您可以看到第九个用户也是undefined。由于用户为undefined,因此无法获取username 属性。

    你确定你从${money[i].ID.slice(25)}得到的ID是正确的吗?如果是,不妨尝试fetch 用户:

    for (var i in money) {
      let user = await client.users.fetch(`${money[i].ID.slice(25)}`).catch(console.error);
    
      finalLb += `${money.indexOf(money[i]) + 1} ${user.username} \`${
        money[i].data
      } credits\`\n`;
      console.log(user);
    }
    

    【讨论】:

    • 抱歉回复晚了,用户 ID 是正确的,从嵌入显示时,所有用户名都正确显示,@username 格式,看起来该代码仍然显示相同的内容," " 编辑:在切换用户声明以包含等待后,我还将用户名添加到 ${user.username},看起来可行!
    • 我也刚刚添加了username :)
    • 如果这个答案有用,请点击它左侧的点赞按钮 (▲)。如果它回答了您的问题,请单击复选标记 (✓) 接受它。 :)
    • 会的!感谢您的帮助 :) 另外,如果您对此无能为力,请不要担心,但我也想知道如何在排行榜上显示每个用户的 avatarURL?在他们的名字旁边。
    猜你喜欢
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-09
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多