Как исправить список команд, дублирующих обработчик

#javascript #node.js #discord #discord.js

Вопрос:

У меня есть обработчик, который регистрирует список команд в консоли с помощью ascii-таблицы, но список моих команд дублируется, например, если у меня 10 команд — список дублируется 10 раз (изображение). Я использую discord.js v12.5.3 и вот мой код:

Указатель

 ["command"].forEach(handler => {
    require(`./handler/${handler}`)(client);
})
 

command.js (файл обработчика)

 const { readdirSync } = require("fs");

const ascii = require("ascii-table");

let table = new ascii("Commands");
table.setHeading("Command", "Load status");

module.exports = (client) => {
  readdirSync("./commands/").forEach(dir => {
        const commands = readdirSync(`./commands/`).filter(file => file.endsWith(".js"));
        for (let file of commands) {
            let pull = require(`../commands/${file}`);
    
            if (pull.name) {
                client.commands.set(pull.name, pull);
                table.addRow(file, '✅');
            } else {
                table.addRow(file, `❌  -> missing a help.name, or help.name is not a string.`);
                continue;
            }
            if (pull.aliases amp;amp; Array.isArray(pull.aliases)) pull.aliases.forEach(alias => client.aliases.set(alias, pull.name));
        }
    });
    // Log the table
    console.log(table.toString());
}
 

Комментарии:

1. Для каждого файла вы читаете все файлы… Почему вы вложили итерации readdirSync?

Ответ №1:

Благодаря @CherryDT я понял, что мне просто нужно удалить readdirSync("./commands/").forEach(dir => {}); , чтобы исправить мой обработчик.