使用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
})