我正在尝试重新编码我的不和谐机器人,现在我想使用事件处理程序。
event_handler.js
const fs = require('fs');
module.exports = (client, Discord) => {
const eventFiles = fs.readdirSync('./events').filter(file => file.endsWith('.js'));
for (const file of eventFiles) {
const event = require(`../events/${file}`);
if (event.once) {
client.once(event.name, (...args) => event.execute(...args, client));
} else {
client.on(event.name, (...args) => event.execute(...args, client));
}
}
}
ready.js (第一次活动)
module.exports = {
name: 'ready',
once: true,
execute(){
console.log('[DarkBOT] Bot ist Online');
}
}
错误
/home/Darkbot/handlers/event_handler.js:9
client.once(event.name, (...args) => event.execute(...args, client));
^
TypeError: Function.prototype.apply was called on undefined, which is a undefined and not a function
我在网上搜索过,但我不知道我是否错过了什么或出了什么问题.. 如果您能帮助我解决并理解我做错了什么,我会很高兴。
编辑:
答案 0 :(得分:0)
您的 event
好像是 undefined
。
我自己测试过,并对您的原始代码进行了一些更改:
//changed module.exports to exports.run
//this allows the code to propperly run
exports.run= (client, Discord) => {
//everything below, I left just as you have it, there did not seem to be any error
const eventFiles = fs.readdirSync("./events").filter((file) => file.endsWith(".js"))
for (const file of eventFiles) {
const event = require(`../events/${file}`)
if (event.once) {
client.once(event.name, (...args) => event.execute(...args, client))
} else {
client.on(event.name, (...args) => event.execute(...args, client))
}
}
}
我也将它添加到我的 index.js 中:
const eventHandler = require("./handlers/event_handler.js")
eventHandler.run(client, Discord)
这是我使用的文件夹结构: