首页 > 解决方案 > 我的 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);
        });
    }    
}

问题是它只列出一个订单,但我希望它以任何方式查看所有订单来解决这个问题?

标签: javascriptnode.jsdiscord.js

解决方案


你为什么不使用节点的普通 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


推荐阅读