将 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.log
和 embed.addField
之间发生变化,如果有人可以解释为什么会发生这种情况以及我该如何解决它,那就太棒了!
【问题讨论】:
【参考方案1】:embed.addField
接受三个参数,第一个是字段的name
,第二个是它的value
。这两个都是字符串。在您的示例中,您的第一个参数是一个转换为字符串的对象(因此变为 [object Object]
),第二个参数(因为您没有提供任何内容)是 undefined
。
要解决此问题,您可以像这样添加两个字符串:
embed.addField(cmd, desc);
或者改用addFields
方法,它接受这样的对象:
embed.addFields(
name: cmd,
value: desc,
);
【讨论】:
以上是关于将 JSON 中的值获取到 discord.js 嵌入中的主要内容,如果未能解决你的问题,请参考以下文章
如何从 json 响应中连接来自不同对象数组的值? Node.js、Discord.js