Discord.js运行报错channel.join() is not a function如何解决
报错原因
- 你正在使用 v13 及以上版本的 Discord.js,该版本起语音相关功能已从核心库中剥离,移入独立的
@discordjs/voice工具包,旧版本语音频道内置的channel.join()方法已被完全移除,调用不存在的方法就会触发该报错。 - 额外排查点:可先确认你通过ID获取到的
channel确实是语音/舞台频道类型,文字、公告等非语音频道本身就不存在加入方法。
修复步骤
首先安装语音功能依赖:
npm install @discordjs/voice修改原有代码,替换旧的join逻辑:
首先在文件顶部引入语音连接方法:const { joinVoiceChannel } = require('@discordjs/voice');
将原来的channel.join()替换为以下代码即可:
joinVoiceChannel({ channelId: channel.id, guildId: guild.id, adapterCreator: guild.voiceAdapterCreator });
- 权限检查:确保你的机器人账号在对应服务器已被授予
连接语音频道、说话的权限,避免连接被拒绝。
内容的提问来源于stack exchange,提问作者Paul King
相关产品推荐
相关产品推荐

