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

使用Discord音乐机器人play命令时触发TypeError错误的原因排查

Discord音乐机器人play命令报错排查与解决

错误信息

TypeError: Cannot read properties of undefined (reading 'options')

错误触发位置:代码中的interaction.options.getString("url")行

用户代码片段

execute: async ({ client, interaction }) => {
        let url = interaction.options.getString("url")
        client.distube.play(interaction.member.voice.channel, url, {
          member: interaction.member,
          textChannel: interaction.channel,
          interaction
        })
    }
}

可能原因及解决方法

1. interaction参数未正确传递

检查命令执行逻辑,确保调用execute时确实传入了有效的interaction对象。部分框架在处理命令时,若参数解构错误或传递路径有误,会导致interaction为undefined。

2. 命令类型不匹配

  • 如果是前缀命令(非Slash命令)调用play,此时不存在interaction对象,应改用message对象提取参数:
    // 前缀命令示例逻辑
    execute: async ({ client, message }) => {
        const url = message.content.split(" ").slice(1).join(" ");
        if (!url) return message.reply("请提供音乐链接!");
        if (!message.member.voice.channel) return message.reply("你需要先加入语音频道!");
        client.distube.play(message.member.voice.channel, url, {
            member: message.member,
            textChannel: message.channel,
            message
        })
    }
    
  • 如果是Slash命令,需确认命令注册时已正确定义url选项,且调用命令时确实传入了该参数。

3. 增加空值校验

在使用interaction相关属性前添加校验,避免因对象不存在报错:

execute: async ({ client, interaction }) => {
        if (!interaction) {
            // 根据命令类型处理,比如提示用户使用正确的命令形式
            return;
        }
        if (!interaction.member.voice.channel) {
            return interaction.reply("请先加入一个语音频道!");
        }
        const url = interaction.options.getString("url");
        if (!url) {
            return interaction.reply("请提供有效的音乐链接!");
        }
        client.distube.play(interaction.member.voice.channel, url, {
          member: interaction.member,
          textChannel: interaction.channel,
          interaction
        })
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:15:41