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

discord.js中/collection命令无法加载MongoDB数据至Embed问题

问题背景
  • Discord机器人每小时发送一张随机名人图片,服务器用户可认领该名人
  • MongoDB数据库文档包含三个核心字段:
    • playerDBName:名人姓名
    • times:用户拥有该名人的次数
    • userNameClaim:认领该名人的用户ID
功能需求

/collection命令需实现以下逻辑:

  1. 用户调用命令时,查询数据库中userNameClaim等于当前用户ID(interaction.user.id)的文档
  2. 提取符合条件文档的playerDBName值
  3. 生成Embed消息:
    • 标题:${interaction.user.username}'s Collection
    • 描述:这是你的名人收藏
  4. 为每个符合条件的名人添加Embed字段,显示用户拥有该名人的次数(times字段值)
遇到的问题

调用/collection命令时,机器人发送的Embed仅显示标题和描述,不显示字段。尝试的代码如下:

if (interaction.isCommand()) {
  if (interaction.commandName === 'collection') {
    const playersCollection = await playersSchema.find({ userNameClaim: interaction.user.id });

    const embedCollection = new EmbedBuilder()
    .setTitle(`${interaction.user.username}'s Collection`)
    .setDescription('Here are the players you have claimed:');

    playersCollection.forEach(playersSchema => {
        embedCollection.addField(playersSchema.players.playerDBName, `Claimed ${player.times} time(s)`);
    });

    interaction.reply({ embeds: [embedCollection] });
}}
问题修复

代码存在两个关键错误导致字段不显示,修正后的代码如下:

if (interaction.isCommand()) {
  if (interaction.commandName === 'collection') {
    const playersCollection = await playersSchema.find({ userNameClaim: interaction.user.id });

    const embedCollection = new EmbedBuilder()
      .setTitle(`${interaction.user.username}'s Collection`)
      .setDescription('这是你的名人收藏:');

    // 遍历查询结果,为每个名人添加字段
    playersCollection.forEach(doc => {
      embedCollection.addField(doc.playerDBName, `已认领 ${doc.times} 次`);
    });

    // 处理无收藏的兜底情况
    if (playersCollection.length === 0) {
      embedCollection.addField('暂无收藏', '你还没有认领过任何名人哦');
    }

    interaction.reply({ embeds: [embedCollection] });
  }
}
错误说明
  1. 字段访问错误:原代码中playersSchema.players.playerDBName是错误的,数据库文档本身直接包含playerDBName字段,无需通过players属性访问
  2. 变量未定义:原代码中player.times引用了未定义的player变量,应使用遍历当前的文档对象doc.times
  3. 变量名冲突:遍历变量名playersSchema与数据模型重名,改为doc避免混淆

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 08:52:36