discord.js v13 如何向语音频道聊天面板发送消息
discord.js 向语音频道聊天面板发送消息实现方案
VoiceChannel类未挂载send方法的判断是正确的,直接将语音频道ID传入普通文本频道的发送逻辑,必然抛出client.channels.cache.get(...).send is not a function错误。
语音频道聊天面板是Discord后续上线的内置关联文本能力,并非独立的普通文本频道,发送消息可按以下方案实现:
- 推荐方案:升级discord.js到v14.8.0及以上正式版本,该版本已原生适配语音频道聊天面板的消息发送能力,升级后无需额外获取关联频道,直接调用send方法即可:
升级命令:
实现代码:npm install discord.js@latest// 拉取目标语音频道实例 const voiceChannel = client.channels.cache.get("填入目标语音频道ID"); // 直接发送消息到语音频道聊天面板 voiceChannel.send('Test message !'); - 兼容方案:若暂时无法升级discord.js版本,可通过语音频道实例的关联属性获取内置聊天面板对应的文本频道实例,再调用发送方法:
const voiceChannel = client.channels.cache.get("填入目标语音频道ID"); // 获取绑定的内置聊天频道实例 const voiceChatChannel = voiceChannel.textChannel; // 判空后发送,避免空值报错 if (voiceChatChannel) voiceChatChannel.send('Test message !');
前置校验项
- 机器人需要拥有目标语音频道的「发送消息」权限,否则会触发权限错误
- 确认传入的ID为目标语音频道ID,不要和频道分类、普通文本频道ID混淆
普通用户端手动发送消息的操作参考:

内容的提问来源于stack exchange,提问作者Bimo
相关产品推荐
相关产品推荐

