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

Discord.js v14交互处理报错及命令注册失败求助

解决Discord.js v14的两个命令相关报错

报错1:TypeError: interaction.isCommand is not a function

原因

Discord.js v14 移除了interaction.isCommand()方法,替代方法为interaction.isChatInputCommand()。

解决方法

修改处理器中的交互判断逻辑:

client.on("interactionCreate", interaction => {
  // 替换旧方法为v14的新方法
  if(!interaction.isChatInputCommand()) return;
  
    const command = client.commands.get(interaction.commandName)
    if (!command) return

    command.execute(interaction)
})

报错2:TypeError: Cannot use 'in' operator to search for 'default_member_permissions' in undefined

原因

命令注册时传入了undefined的命令数据,通常是因为某个命令文件未正确导出data对象,导致遍历命令时读取到无效项。

解决方法

  1. 统一命令文件结构:确保所有命令文件都像示例一样,正确导出包含命令元数据的data对象。
  2. 添加注册前的合法性检查:修改命令注册代码,避免传入无效数据:
client.on("ready", () => {
    client.guilds.cache.forEach(guild => {
        client.commands.forEach(command => {
            // 先验证data存在再执行注册
            if (command.data) {
                guild.commands.create(command.data)
            }
        })
    })
})

额外优化提示

  • 避免在ready事件中遍历所有服务器重复注册命令,推荐使用Discord.js的REST API批量注册全局/服务器命令,减少API请求次数。
  • 确保所有命令的name属性唯一,防止命令被意外覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:40:24