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

Discord.js下拉菜单持续运行失败,报client未定义错误如何解决?

核心错误原因

控制台抛出的ReferenceError: client is not defined是问题根源:rr1.js命令文件中直接使用client对象监听clickMenu事件,但该文件既没有引入client实例,也没有从外部接收该参数。该报错抛出后没有被catch捕获,所以同步触发了未处理Promise拒绝的警告,修复client未定义的问题后相关警告也会同步消失。

分步修复方案

1. 修改main.js的命令调用逻辑

给execute方法新增第三个参数传入client实例,修改后代码如下:

client.on('message', async (message, guild) => {
  if (!message.content.startsWith(prefix) || message.author.bot) return;
  const args = message.content.slice(prefix.length).split(/ +/);
  const command = args.shift().toLowerCase();

    switch (message.content) {
      case (prefix + "rr1"):
        client.commands.get("rr1").execute(message, args, client);
      break;
    }
});

2. 修改rr1.js的execute函数入参

接收从main.js传递过来的client实例,调整后的代码片段如下:

module.exports = {
  name: 'rr1',
  description: 'send embedded level message',
  async execute(message, args, client) {
    // 此处保留你原来的所有业务代码即可
  }
}
额外优化建议

当前写法每次执行rr1命令都会全局注册一个新的clickMenu事件监听器,多次执行后会出现重复触发、内存泄漏的问题。推荐改用discord-buttons提供的消息组件收集器来处理单次菜单交互,避免全局重复注册事件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:24:08