javascript - 将 JSON 中的值获取到 discord.js 嵌入中
问题描述
我正在制作一个 discord.js 机器人,其中所有命令数据都存储在 JSON 文件中,当help
命令运行时,我希望它在用户输入的级别上迭代 JSON。
到目前为止,我已经设法检查输入的值是命令还是类别,并且我已经能够获取console.log
所有信息,并且它显示了我想要在嵌入中显示的正确数据。
例如,在我的 JSON 文件中,我有:
{
"category1": {
"command1": {
"Aliases": [],
"Description": "Runs a command"
}
}
}
当我执行console.log()
用户运行时,g!help category1
它会输出:
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
,如果有人可以解释为什么会发生这种情况以及我如何解决它,那将是惊人的!
解决方案
embed.addField
接受三个参数,第一个是name
字段的,第二个是它的value
。这两个都是字符串。在您的示例中,您的第一个参数是一个对象,该对象被转换为字符串(因此变为[object Object]
),第二个参数(因为您不提供任何内容)是undefined
.
要解决此问题,您可以像这样添加两个字符串:
embed.addField(cmd, desc);
或者改用addFields
接受这样一个对象的方法:
embed.addFields({
name: cmd,
value: desc,
});
推荐阅读
- vim - 在 Vim 中,如何设置在插件加载后运行的自动命令?
- javascript - 如何在 if 语句中使用按钮值和对象值来检查正确答案(进行测验)
- javascript - 如何在每次使用 jQuery 或 javascript 的下午 6:30 之后在 datepicker 中禁用今天的日期
- python - 如何使用正则表达式和精确文字匹配的组合来获取索引值
- popup - 如何在弹出窗口中显示最新数据
- firebase - Flutter_facebook_plugin 上的问题
- java - 为什么@Table注释在通过spring的CRUD操作中是可选的
- java - Jersey ApplicationPath 不工作 - 404 错误
- google-apps-script - 从第 N 列获取最后一行单元格值,如果匹配特定单词发送电子邮件
- css - 如何在单击时启动 css 动画并在第二次单击时反转运行动画?