You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

discord.js中如何向事件文件传递guild变量并解决guild undefined报错

问题原因
  • 你在index.js中注册事件回调时硬编码了参数顺序(message, guild, ...args),但Discord.js不同事件触发时传递的参数完全不同:guildCreate事件触发时只会传递1个参数:刚加入的服务器对象guild,没有message参数。所以此时你代码中回调的第一个变量message实际拿到了guild对象,第二个变量guild自然是undefined。
  • 你没有把client对象传递给事件的execute方法,而事件文件中execute的第一个参数要求是client,参数顺序完全错位,进一步导致变量取值错误。
修复方法

1. 修改index.js中的事件注册逻辑

删除硬编码的参数,直接透传所有事件参数,同时主动传入client对象:

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(client, ...args));
    } else {
        client.on(event.name, (...args) => event.execute(client, ...args));
    }
}

这种写法适配所有类型的事件,不需要为不同事件单独调整参数顺序。

2. 事件文件无需修改

你现有的guildCreate事件文件的execute参数(client, guild)顺序是正确的,修改index.js后即可正常获取到guild对象。

内容的提问来源于stack exchange,提问作者johng3587

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:36:03