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

discord.js机器人ban/kick命令报execute未定义错误如何解决?

discord.js 命令无法执行问题解决方案

问题根因

你在向client.commands集合注册命令时,使用的是模块导出的name字段作为集合的键。你编写的ban命令模块导出的name为大写开头的Ban,但主文件中调用命令时使用全小写的ban作为键去查找,集合中没有对应键的内容,返回undefined,调用execute方法时就会抛出TypeError: Cannot read property 'execute' of undefined报错。
可正常运行的help命令name字段和调用时的键均为全小写help,完全匹配,因此可以正常执行。

解决方案

提供两种可直接落地的修复方案,二选一即可:

  • 方案一:统一命令名大小写规范,将所有命令模块的name字段改为全小写,和主文件调用时的键保持一致
    修改后的ban命令模块代码如下:
module.exports = {
    name: 'ban', // 原大写开头的Ban改为全小写ban
    description: "Bans members",
    execute (message, args) { 
        message.channel.send('test')
    }
}

kick命令按照相同规则修改name字段即可。

  • 方案二:保持命令模块name字段的大写写法,同步修改主文件中调用时的键,保证完全匹配
    主文件对应代码修改如下:
} else if (command === 'ban') {
  client.commands.get('Ban').execute(message, args);
} else if (command === 'kick') {
  client.commands.get('Kick').execute(message, args);
}

优化建议

为了从根源避免大小写不匹配问题,可在命令注册和匹配阶段统一做小写转换:

  1. 注册命令时统一将name转小写:client.commands.set(command.name.toLowerCase(), command)
  2. 匹配用户输入的命令时先转小写再判断
    修改完成后无论用户输入的是Ban、BAN还是ban,都可以正常匹配到对应命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:45:02