如何将 JSON 文件中的数据导入嵌入?

Posted

技术标签:

【中文标题】如何将 JSON 文件中的数据导入嵌入?【英文标题】:How to import data from a JSON file into an embed? 【发布时间】:2019-07-09 20:06:44 【问题描述】:

我是个十足的傻瓜,试图在没有任何编码知识的情况下编写一个 Discord.js 机器人。我正在努力学习。 我们正在尝试制作的项目是一个机器人,它会回复一条不和谐的嵌入消息。这是一个在线游戏的公会,其中有多个不同的角色。他们每个人都有独特的统计数据、技能和类型。 这个想法是用所有单元的所有信息填充一个 JSON 文件,然后让人们使用 .unitname 并让机器人回复嵌入关于该单元的所有信息。 它应该是这样的:

首先,为每个单元添加几十个不同的命令似乎不正确,所以我让机器人检查每条消息是否有潜在的单元请求。 这对我来说听起来很不优化,但它会在实践中减慢机器人的速度吗? 我将如何对其进行编码以将其识别为.OneOfDozensOfPossibleUnits? 也许我可以有一个包含所有单位名称的单独列表,并让它在.AnyOfThose 触发,但这是最佳方式吗?

假设机器人将.Lucius 识别为单元请求。机器人必须收集输入消息,减去"."(天哪,我希望这是可能的,"." + "input" 听起来超级笨重哈哈哈)。 然后他将不得不查看包含数十个单元的 JSON 文件,并专门从 Lucius 那里收集数据。我该怎么做? 然后我会保存数据,例如统计数据。那些必须放在我称为“变量”的地方(检查代码),但它的语法是什么? 我还想添加一些额外的if 检查(例如,如果单位类型 == “防御”,则将颜色设为蓝色)。这个我可能可以搜索并找到它的语法,但如果你能包含它,我会非常高兴。

对不起,这是一个“请为我做这项工作”的帖子,但没办法,哈哈。我通常会花时间一点一点地学习所有东西,但是由于这是一个社区项目,所以我会在很多领域视而不见。如果您有任何其他提示或发现程序中的潜在缺陷,请告诉我。提前谢谢!

client.on('message', message => 
  if (message.content === '.' + "unit") 
    const embed = new Discord.RichEmbed()
      .setAuthor("Author", "https://lh3.googleusercontent.com/rA0lKRGI_-bP-Jj4nkVc5lm6WJfO3nYlAz089otvQnLeevIoao1CTvaU0l0dqnnWIvLZTSOTaEwj6W04IZSRHQz3NYWiePtJnW3bANh54aI=w120")
      .setColor(0xFF0000)
      .addField("<:stats:545991150486421514> Stats", "⧫ ATK: " + "variable" + "\r\n ⧫ HP: " + "variable" + "\r\n ⧫ DEF: " + "variable", true)
      .addField("\u200B", "⧫ CRIT RATE: " + "variable" + "\r\n ⧫ CRIT DMG: " + "variable" + "\r\n ⧫ AGI: " + "variable", true)
      .addField("<:skills:545991578355761152> Skills", "Skill descriptions")
      .setImage("https://lh3.googleusercontent.com/rA0lKRGI_-bP-Jj4nkVc5lm6WJfO3nYlAz089otvQnLeevIoao1CTvaU0l0dqnnWIvLZTSOTaEwj6W04IZSRHQz3NYWiePtJnW3bANh54aI=w120", 2, 2)
      .setThumbnail("https://lh3.googleusercontent.com/rA0lKRGI_-bP-Jj4nkVc5lm6WJfO3nYlAz089otvQnLeevIoao1CTvaU0l0dqnnWIvLZTSOTaEwj6W04IZSRHQz3NYWiePtJnW3bANh54aI=w120")
      .setFooter("Footer", "https://lh3.googleusercontent.com/rA0lKRGI_-bP-Jj4nkVc5lm6WJfO3nYlAz089otvQnLeevIoao1CTvaU0l0dqnnWIvLZTSOTaEwj6W04IZSRHQz3NYWiePtJnW3bANh54aI=w120");
    message.channel.send(embed);
  
);

【问题讨论】:

【参考方案1】:

你绝对可以得到存储在 JSON 文件中的东西,实际上这很容易,MDN here 有一个不错的文档。

我同意你的观点,因为你说检查每个命令在检查它的意义上是相当不优化的,所以你可以删除前缀然后处理命令的其余部分,.slice() 将允许你这样做,您可以找到有关此here 的更多信息。例如,您可以拥有&lt;message&gt;.content.slice(1);,如果您输入.unitname,它将返回unitname,然后您可以使用它在另一个文件中的JSON对象中进行搜索,例如。

如果您要从 JSON 文件中获取单位并检查单位类型,您绝对可以更改嵌入的颜色,只需创建一个变量,然后在发送嵌入时使用它(即.setColor(myColourVariable)) ,但只需确保颜色变量为 0x[hex_colour_code] 。我希望这会有所帮助,如果您需要其他任何帮助,请发表评论。

【讨论】:

以上是关于如何将 JSON 文件中的数据导入嵌入?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 iOS 6 中的 RESTkit 2.0 将 JSON 中的 base64 图像导入核心数据二进制文件?

如何将 JSON, Text, XML, CSV 数据文件导入 MySQL

如何将 JSON,Text,XML,CSV 数据文件导入 MySQL

如何将JSON数据导入Javascript表?

如何将json数据导入到Hive中

如何将 JSON 文件导入 Django 数据库?