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

Discord.js v13.1.0报client.voice.createBroadcast is not a function如何解决

错误产生原因

你遇到的报错是Discord.js版本迭代导致的API变更问题:

  • Discord.js从v13版本开始,将所有语音相关功能从核心库中剥离,移入独立的@discordjs/voice包中,核心库不再内置client.voice.createBroadcast方法,也不再自带语音频道加入、音频播放相关的API
  • 同时v13版本废弃了原有的message事件,替换为messageCreate事件,且强制要求声明 bot 运行需要的网关意图,未声明对应意图也会导致功能异常
修复步骤
  • 首先安装语音功能依赖:npm install @discordjs/voice
  • 调整代码逻辑,使用新的语音API实现功能,同时补全必要的网关意图声明
修正后的完整代码
const secret = require('./secret.json');
const { Client, Intents } = require('discord.js');
const discordTTS = require('discord-tts');
const { joinVoiceChannel, createAudioPlayer, createAudioResource, AudioPlayerStatus } = require('@discordjs/voice');

// 声明必要的网关意图
const client = new Client({
  intents: [
    Intents.FLAGS.GUILDS,
    Intents.FLAGS.GUILD_VOICE_STATES,
    Intents.FLAGS.GUILD_MESSAGES
  ]
});

client.login(secret.token);

client.on('ready', () => {
    console.log('Online');
});

// 替换为v13支持的messageCreate事件
client.on('messageCreate', async msg => {
    if(msg.content === 'say test 123'){
        // 校验发送者是否在语音频道
        if (!msg.member.voice.channel) return msg.reply('你需要先加入一个语音频道');

        // 加入语音频道
        const connection = joinVoiceChannel({
            channelId: msg.member.voice.channel.id,
            guildId: msg.guild.id,
            adapterCreator: msg.guild.voiceAdapterCreator
        });

        // 创建音频播放器
        const player = createAudioPlayer();
        // 生成TTS音频流并转为播放资源
        const audioResource = createAudioResource(discordTTS.getVoiceStream('test 123'));

        player.play(audioResource);
        connection.subscribe(player);

        // 播放完成后自动退出频道(可选)
        player.on(AudioPlayerStatus.Idle, () => {
            connection.destroy();
        });
    }
});

内容的提问来源于stack exchange,提问作者Ajharul Haque Choudhury

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:06:03