Discord 事件处理程序错误,我不知道为什么

时间:2021-07-15 08:17:06

标签: javascript discord discord.js

我正在尝试重新编码我的不和谐机器人,现在我想使用事件处理程序。

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

我在网上搜索过,但我不知道我是否错过了什么或出了什么问题.. 如果您能帮助我解决并理解我做错了什么,我会很高兴。

编辑:

dir tree

handler

1 个答案:

答案 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)

这是我使用的文件夹结构:

enter image description here