You need to enable JavaScript to run this app. 如何设置Discord机器人加入语音频道后自动self-deafen,解决方法调用报错
优惠活动
大模型
产品
解决方案
定价
更多

如何设置Discord机器人加入语音频道后自动self-deafen,解决方法调用报错

报错原因
  • 方法调用对象错误:setSelfDeaf、setSelfMute这类修改自身语音状态的方法,不属于语音频道(VoiceChannel)实例,而是属于加入频道后返回的语音连接(VoiceConnection)实例,直接对频道对象调用不存在的方法,自然会抛出类型错误。
  • 异步逻辑未等待:voicechannel.join()是异步操作,没有使用await等待加入完成就尝试调用后续方法,此时连接还未建立,也会引发异常。
  • 方法名拼写错误:正确的方法名是驼峰格式setSelfDeaf,你写的setSelfdeaf首字母d未大写,就算调用对象正确也会报错。
修复代码

根据你使用的discord.js版本选择对应方案:

适用discord.js v12版本

client.on('ready', async () => {
    console.log(`Logged in ${client.user.tag}`)
    const voicechannel = client.channels.cache.get("869738167576723506");
    // 等待加入完成拿到连接实例
    const connection = await voicechannel.join();
    // 修改自身状态为deaf
    connection.voice.setSelfDeaf(true);
})

适用discord.js v13及以上版本

v13之后语音功能已经拆分为独立的@discordjs/voice包,需要先安装依赖:
npm install @discordjs/voice

代码示例:

const { joinVoiceChannel } = require('@discordjs/voice');

client.on('ready', async () => {
    console.log(`Logged in ${client.user.tag}`)
    const voicechannel = client.channels.cache.get("869738167576723506");
    // 加入频道时直接配置selfDeaf状态
    joinVoiceChannel({
        channelId: voicechannel.id,
        guildId: voicechannel.guild.id,
        adapterCreator: voicechannel.guild.voiceAdapterCreator,
        selfDeaf: true
    });
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 07:45:03