使用Node.js从文件夹内迭代读取模块

你好,我是Ampoi。这是我更改名称为Skuronosuke后的首次投稿。在这篇文章中,我将介绍如何使用Node.js来从文件夹中循环加载模块,以便在需要获取DiscordJS命令信息和各个命令的执行内容时使用。

做法是什么?

使用fs模块循环处理文件夹中的文件,并使用fs命令获取和存储这些文件中的数据到列表中。

代码 (Mandarin Chinese)

//./commands/hogehoge.js


//commandsフォルダ内にあるファイルの一例
module.exports = function(){
  return {
    data:{
      name: "bot",
      description: "どういうことBOT「どういうこと」",
      options: [
        {
          type: 3,
          name: "moji",
          required: true,
          description: "BOT風にする文字を入力"
        }
      ]
    },
    command(interaction){
      const moji = interaction.options.getString("moji")
      interaction.reply(`${moji}bot「${moji}」`)
    }
  }
}
//index.js

//コマンドデータ
const fs = require("fs") //fsモジュールのインストール
const path = require("path") //pathモジュールのインストール
const command_folder = "./commands/" //読み込むファイルたちが入ってる親フォルダ
let commands = [] //読み込んだコマンドの情報を格納するフォルダ(interaction)
let command_functions = {} //コマンドの関数を格納するフォルダ
//command_folder内の.jsファイルを取得
const files = fs.readdirSync(command_folder)
  .filter((file) => {
      return path.extname(file).toLowerCase() === ".js"; 
  })
files.forEach((file) => {
  const command_file_setup = require(`${command_folder}${file}`) //ファイルの場所
  //以下DiscordJS関係
  const command_file = command_file_setup()
  commands.push(command_file.data)
  command_functions[command_file.data.name] = command_file.command
})
广告
将在 10 秒后关闭
bannerAds