You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

discord.js结合mongoose开发排行榜显示用户Tag的问题咨询

Discord机器人排行榜功能修复方案

错误原因

  • 语法报错根因:map的回调函数未声明为async,直接在普通函数内使用await属于语法错误,导致JS解析模板字符串时误判符号,抛出缺失}的异常。
  • 逻辑异常原因:client.users.fetch()是异步接口,返回Promise对象,不通过await等待异步执行完成直接读取.tag属性,自然返回undefined。

正确实现代码

// 整段代码需要放在async修饰的函数内运行
const lb = await Promise.all(
  users
    .sort(({ Bobux: a }, { Bobux: b }) => b - a) // 按余额降序排序
    .slice(0, 15) // 仅保留前15名用户
    .map(async ({ User, Bobux }, pos) => {
      try {
        // 等待用户信息拉取完成后再取tag属性
        const userInfo = await client.users.fetch(User);
        return `${pos + 1}. ${userInfo.tag} - ${commaNumber(Bobux)} Bobux`;
      } catch (err) {
        // 拉取用户失败时兜底显示用户ID,避免整个排行榜崩溃
        return `${pos + 1}. 未知用户(${User}) - ${commaNumber(Bobux)} Bobux`;
      }
    })
);

额外说明

如果需要同时保留@提及用户的格式,可以把返回内容里的用户tag部分调整为${userInfo.tag} <@${User}>即可。

内容的提问来源于stack exchange,提问作者Bob joe12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:36:03