Discord.JS 命令处理程序:如何从目录中的所有目录读取文件?

Discord.JS Command Handler: How to read files from all directories within a directory?

我 运行 在检查我的文件的命令目录时遇到了一些问题。我希望 readdirSync/commands/ 目录(音乐、信息等)中的某些目录中读取所有 .js 文件,但我似乎不知道或无法找到一种方法来做到这一点。

代码如下:

import { readdirSync } from "fs";
import { dirname, join } from "path";
import { fileURLToPath } from "url";
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);

export async function importer(client) {
    const commandFiles = readdirSync(join(__dirname, "../../", "/commands/")).filter((file) => file.endsWith(".js"));

    for (const file of commandFiles) {
        const command = await import(join(__dirname, "../../", "/commands/", `${file}`));
        client.commands.set(command.default.name, command.default);
    }
}

在 commandFiles 中,我似乎无法在 commands 中的 / 之后找到一些东西,因此它可以读取 /commands/ 中的目录及其文件.

感谢任何帮助!

谢谢!

读取commands目录后需要读取子目录,并使用子目录名作为join的参数:

export async function importer(client) {
  const dir = join(__dirname, "../../commands/")

  const commandCategories = readdirSync(dir)
  for (let cat of commandCategories) {
    const commands = readdirSync(join(dir, cat)).filter(files => files.endsWith(".js"));

    for (const file of commands) {
      const command = import(join(dir, cat, file));

      // Add any logic you want before you load the command here
    
      client.commands.set(command.default.name, command.default);
    }
  }
}