我正在编写一个事件处理程序(由 Codelyon),但我遇到了一个新错误。在这里
C:\Users\shann\Desktop\DiscordBot\main.js:10
require(`./handlers/${handler}`)(client, Discord);
^
TypeError: require(...) is not a function
at C:\Users\shann\Desktop\DiscordBot\main.js:10:37
at Array.forEach (<anonymous>)
at Object.<anonymous> (C:\Users\shann\Desktop\DiscordBot\main.js:9:37)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47
我的主要编码在这里。 (main.js)
const Discord = require('discord.js');
const client = new Discord.Client();
require("dotenv").config();
const fs = require('fs');
client.commands = new Discord.Collection();
client.events = new Discord.Collection();
['command_handler','event_handler'].forEach(handler =>{
require(`./handlers/${handler}`)(client, Discord);
});
client.login(process.env.DISCORD_TOKEN);
我拥有所有必要的软件包(以及其他软件包,例如图像抓取工具)。 对于我的活动,我有消息并准备好了。 (Ready 会在我的机器人运行时告诉我,并且在说出命令时会感知消息)。我也有一些命令。告诉我你是否需要这些代码。 这是我的事件处理程序的编码:
const fs = require('fs');
module.exports = (client, Discord) =>{
const load_dir = (dirs) =>{
const event_files = fs.readdirSync(`./events/${dirs}`).filter(file => file.endsWith('.js'));
for(const file of event_files){
const event = require(`../events/${dirs}/${file}`);
const event_name = file.split('.')[0];
client.on(event_name, event.bind(null, Discord, client));
}
}
['client', 'guild'].forEach(e => load_dir(e));
}
这是我为我的命令处理程序编写的代码:
const fs = reqire('fs');
module.exports = (client, Discord) =>{
const command_files = fs.readdirSync('./commands/').filter(file => file.endsWith('.js'))
for(const file of command_files){
const command = require(`../commands/${file}`)
if(command.name){
client.commands.set(command.name, command);
} else {
continue;
}
}
}
答案 0 :(得分:0)
对于任何想知道这个问题的人来说,这只是一个错字。我在 command_handler 中拼写错误。