将 JSON 中的值获取到 discord.js 嵌入中

Posted

技术标签:

【中文标题】将 JSON 中的值获取到 discord.js 嵌入中【英文标题】:Getting the values from a JSON into a discord.js embed 【发布时间】: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 之间发生变化,如果有人可以解释为什么会发生这种情况以及我该如何解决它,那就太棒了!

【问题讨论】:

【参考方案1】:

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

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

embed.addField(cmd, desc);

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

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

【讨论】:

以上是关于将 JSON 中的值获取到 discord.js 嵌入中的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Discord.js 中的用户名中查找用户 ID?

如何从 json 响应中连接来自不同对象数组的值? Node.js、Discord.js

如何将 JSON 数据嵌入到 discord.js 中

discord.js 12 任何方式将数据从 json 文件发送到通道?

discord.js 将 .json 值导入变量

Discord.js 基于 var 从 json 文件中获取数据