如何将数据从 JSON 文件导入嵌入?
How to import data from a JSON file into an embed?
我完全是个傻瓜,在没有任何编程知识的情况下尝试编写 Discord.js 机器人程序。我正在努力学习。
我们正在尝试制作的项目是一个机器人,它将使用不和谐的嵌入消息进行回复。这是一个在线游戏公会,其中有多个不同的角色。他们每个人都有独特的统计数据、技能和类型。
这个想法是用所有单元的所有信息填充一个 JSON 文件,然后让人们使用 .unitname
并让机器人回复嵌入将关于该单元的所有信息。
它应该是这样的:
首先,为每个单元添加几十个不同的命令似乎不对,所以我让机器人检查每条消息是否有潜在的单元请求。
这对我来说听起来很不优化,但它会在实践中减慢机器人的速度吗?
我将如何编码以将其识别为 .OneOfDozensOfPossibleUnits
?
也许我可以有一个包含所有单位名称的单独列表,并让它在 .AnyOfThose
处触发,但这是最好的方法吗?
假设机器人将 .Lucius
识别为一个单元请求。机器人将不得不收集输入消息,减去 "."
(天哪,我希望这是可能的,"." + "input"
听起来超级笨拙哈哈哈)。
然后他就得查看JSON这个包含几十个单元的文件,专门从Lucius那里搜集数据。我该怎么做?
然后我会保存数据,例如统计数据。这些必须放在我称为 "variable" 的地方(检查代码),但是它的语法是什么?
我还想添加一些额外的 if
检查(例如,如果单位类型 == "defense",则将颜色设置为蓝色)。这个我可能可以搜索并找到它的语法,但如果你能包括它我会很高兴。
对不起,就是这样"do the work for me, please"post,没办法,哈哈。我通常会花时间一点一点地学习一切,但由于这是一个社区项目,我会盲目地进入很多领域。如果您有任何其他提示或发现程序中的潜在缺陷,请告诉我。提前致谢!
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);
}
});
你绝对可以得到存储在 JSON 文件中的东西,实际上这很容易,MDN here 有一个不错的文档。
我同意你的说法,从像你一样检查每个命令的意义上来说,检查每个命令都没有得到优化,所以你可以删除前缀,然后处理命令的其余部分,.slice()
将允许你这样做,你可以找到更多关于这个的信息 here。因此,举个例子,如果你输入 .unitname
,你可以有 <message>.content.slice(1);
并且会 return unitname
,然后你可以使用它在 [=24] 中进行搜索=] 例如,另一个文件中的对象。
如果您要从 JSON 文件中获取单位并检查单位类型是什么,您绝对可以更改嵌入的颜色,只需创建一个变量,然后在发送嵌入时使用它(即 .setColor(myColourVariable)
),但只需确保颜色变量为 0x[hex_colour_code]
。我希望这会有所帮助,如果您需要其他任何帮助,请 post 发表评论。
我完全是个傻瓜,在没有任何编程知识的情况下尝试编写 Discord.js 机器人程序。我正在努力学习。
我们正在尝试制作的项目是一个机器人,它将使用不和谐的嵌入消息进行回复。这是一个在线游戏公会,其中有多个不同的角色。他们每个人都有独特的统计数据、技能和类型。
这个想法是用所有单元的所有信息填充一个 JSON 文件,然后让人们使用 .unitname
并让机器人回复嵌入将关于该单元的所有信息。
它应该是这样的:
首先,为每个单元添加几十个不同的命令似乎不对,所以我让机器人检查每条消息是否有潜在的单元请求。
这对我来说听起来很不优化,但它会在实践中减慢机器人的速度吗?
我将如何编码以将其识别为 .OneOfDozensOfPossibleUnits
?
也许我可以有一个包含所有单位名称的单独列表,并让它在 .AnyOfThose
处触发,但这是最好的方法吗?
假设机器人将 .Lucius
识别为一个单元请求。机器人将不得不收集输入消息,减去 "."
(天哪,我希望这是可能的,"." + "input"
听起来超级笨拙哈哈哈)。
然后他就得查看JSON这个包含几十个单元的文件,专门从Lucius那里搜集数据。我该怎么做?
然后我会保存数据,例如统计数据。这些必须放在我称为 "variable" 的地方(检查代码),但是它的语法是什么?
我还想添加一些额外的 if
检查(例如,如果单位类型 == "defense",则将颜色设置为蓝色)。这个我可能可以搜索并找到它的语法,但如果你能包括它我会很高兴。
对不起,就是这样"do the work for me, please"post,没办法,哈哈。我通常会花时间一点一点地学习一切,但由于这是一个社区项目,我会盲目地进入很多领域。如果您有任何其他提示或发现程序中的潜在缺陷,请告诉我。提前致谢!
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);
}
});
你绝对可以得到存储在 JSON 文件中的东西,实际上这很容易,MDN here 有一个不错的文档。
我同意你的说法,从像你一样检查每个命令的意义上来说,检查每个命令都没有得到优化,所以你可以删除前缀,然后处理命令的其余部分,.slice()
将允许你这样做,你可以找到更多关于这个的信息 here。因此,举个例子,如果你输入 .unitname
,你可以有 <message>.content.slice(1);
并且会 return unitname
,然后你可以使用它在 [=24] 中进行搜索=] 例如,另一个文件中的对象。
如果您要从 JSON 文件中获取单位并检查单位类型是什么,您绝对可以更改嵌入的颜色,只需创建一个变量,然后在发送嵌入时使用它(即 .setColor(myColourVariable)
),但只需确保颜色变量为 0x[hex_colour_code]
。我希望这会有所帮助,如果您需要其他任何帮助,请 post 发表评论。