【问题标题】:Getting the values from a JSON into a discord.js embed将 JSON 中的值获取到 discord.js 嵌入中
【发布时间】:2021-06-17 13:15:55
【问题描述】:

我正在制作一个 discord.js 机器人,其中所有命令数据都存储在 JSON 文件中,当运行 help 命令时,我希望它以用户输入的级别遍历 JSON。

到目前为止,我已经成功地检查了输入的值是命令还是类别,并且我已经能够console.log 所有信息,并且它显示了我想要在嵌入上显示的正确数据。

例如,在我的 JSON 文件中,我有:

{
  "category1": {
    "command1": {
      "Aliases": [],
      "Description": "Runs a command"
    }
  }
}

当我在用户运行g!help category1 时执行console.log() 时,它会输出:

command1
Runs a command

当它发送嵌入时我得到:

[object Object]
undefined

这是遍历 JSON 并将数据添加到嵌入的代码部分:

for (ctg in help_data) {
  if (args[0] === ctg) {
    embed.setTitle(ctg)
    for (command in help_data[ctg]) {
      var cmd = command
      var desc = help_data[ctg][command].Description

      console.log(cmd)
      console.log(desc)

      embed.addField({
        "name": cmd,
        "Value": desc
      })
    }
  }
}

我不明白为什么它会在 console.logembed.addField 之间发生变化,如果有人可以解释为什么会发生这种情况以及我该如何解决它,那就太棒了!

【问题讨论】:

    标签: javascript node.js json discord.js


    【解决方案1】:

    embed.addField 接受三个参数,第一个是字段的name,第二个是它的value。这两个都是字符串。在您的示例中,您的第一个参数是一个转换为字符串的对象(因此变为 [object Object]),第二个参数(因为您没有提供任何内容)是 undefined

    要解决此问题,您可以像这样添加两个字符串:

    embed.addField(cmd, desc);
    

    或者改用addFields 方法,它接受这样的对象:

    embed.addFields({
      name: cmd,
      value: desc,
    });
    

    【讨论】:

      猜你喜欢
      • 2021-12-10
      • 1970-01-01
      • 2020-09-22
      • 2021-04-06
      • 1970-01-01
      • 2020-11-29
      • 2021-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多