javascript - 我的 discord.js 命令没有返回 json 文件中的所有内容
问题描述
嗨,我正在为我的机器人创建一个命令,其中列出了 orders.json 文件中的所有“订单”,orders.json 文件将这些“订单”存储为这样
{
"ysh": {
"orderID": "ysh",
"userID": "734532125021307001",
"guildID": "745621984192364574",
"guild": "Cybers Taco Stand Server",
"channelID": "745621984192364578",
"order": "taco",
"customer": "ultradeadmeme#7674",
"status": "Ready",
"ticketChannelMessageID": "not set",
"chef": "597167860200243212",
"chefmention": "ultradeadmeme#7674"
},
"lhb": {
"orderID": "lhb",
"userID": "734532125021307001",
"guildID": "745409671430668389",
"guild": "Cybers Taco Stand Server",
"channelID": "746423099871985755",
"order": "a",
"customer": "Aro#1221",
"status": "Unclaimed",
"ticketChannelMessageID": "not set"
}
}
现在我希望命令列出该文件中的所有命令命令代码:
const fsn = require("fs-nextra");
const Discord = require('discord.js');
module.exports = {
name: 'list',
description: 'List of all orders',
aliases: ['allorders'],
execute(message) {
fsn.readJSON("./orders.json").then((orderDB) => {
let orderString;
for(let x in orderDB) {
orderString = "`" + x + "`: " + orderDB[x].status + "\n";
// add newline character at the end to display each "order" on a separate line
}
const exampleEmbed = new Discord.MessageEmbed()
.setTitle('Here\'s a list of the current orders and their status.')
.setDescription(orderString)
.setTimestamp()
.setFooter(message.member.user.tag, message.author.avatarURL());
message.channel.send(exampleEmbed);
});
}
}
问题是它只列出一个订单,但我希望它以任何方式查看所有订单来解决这个问题?
解决方案
你为什么不使用节点的普通 fs 库?
并且您没有附加到 orderString 您正在替换它
您的代码可以:
orderstring = "ysh : Ready"
然后
orderstring = "lhb : Unclaimed"
替换第一个订单,所以正确的代码是:
const fsn = require("fs-nextra");
const Discord = require('discord.js');
module.exports = {
name: 'list',
description: 'List of all orders',
aliases: ['allorders'],
execute(message) {
fsn.readJSON("./orders.json").then((orderDB) => {
let orderString;
let amount = 0;
for (let x in orderDB) {
if (orderString != undefined) {
orderString += "`" + x + "`: " + orderDB[x].status + "\n";
} else {
orderString = "`" + x + "`: " + orderDB[x].status + "\n";
}
amount++;
// add newline character at the end to display each "order" on a separate line
} const exampleEmbed = new Discord.MessageEmbed()
.setTitle('Here\'s a list of the current orders and their status.')
.setDescription(orderString)
.setTimestamp()
.setFooter(message.member.user.tag, message.author.avatarURL());
message.channel.send(exampleEmbed);
});
}
}
如果 orderString 未定义,我还添加了一个测试,因为否则您将拥有:undefined`ysh`: Ready
推荐阅读
- c++ - 类括号初始化被误解为 std::initializer_list 而不是复制构造
- java - 为什么我的代码没有在列表中提供不同的 int 值?
- javascript - 无法读取未定义的属性“getContext” - 电子
- python - 基于其值的标签名称 Ansible 的 EC2 实例的动态脚本清单
- devexpress - 如何使用 DevExpress 的 DockPanel 和 DocumentManager 将焦点切换到不同的选项卡
- javascript - jQuery 期望 AJAX 调用上的文本输入的数字
- ansible - 带有变量变量的模板有更好的方法吗?
- php - Laravel pluck 方法无法正确格式化对象
- angular - 如何在课堂上将数字转换为枚举打字稿
- java - 尝试使用 FileProvider 共享 MP3 文件时出现 FileNotFoundException