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

如何使用discord.py向VoiceChannel语音频道发送聊天消息?

核心原因

直接对VoiceChannel实例调用send()方法无法发送消息,是因为VoiceChannel实体仅对应音视频传输通道,不承载语音频道的文本聊天能力。语音频道的公屏聊天由其绑定的专属文本频道实体处理,相关属性归类在VoiceChannel的成员属性条目下,不属于频道消息发送的通用方法章节,查阅时容易遗漏。

正确实现代码

基础写法:

# 获取目标语音频道实例
voice_channel = self.bot.get_channel(填入语音频道ID)
# 调用语音频道关联的文本频道对象发送消息
await voice_channel.text_channel.send("Hello World")

兼容未开启内置文本聊天场景的写法:

voice_channel = self.bot.get_channel(填入语音频道ID)
# 先判断关联文本频道是否存在、是否有权限访问
if voice_channel.text_channel:
    await voice_channel.text_channel.send("Hello World")
else:
    # 自行实现无可用文本频道时的处理逻辑
    pass
注意事项
  • 机器人需持有目标语音频道的查看权限,以及对应关联文本频道的发送消息权限,否则会抛出权限不足异常
  • 上述写法要求discord.py版本为2.0及以上,1.7.x及更早版本未适配语音频道内置文本频道特性,不存在text_channel属性,需要升级依赖版本后才可使用
  • 若服务器管理员手动关闭了指定语音频道的内置文本聊天功能,text_channel属性会返回空值,必须做非空判断避免程序崩溃

内容的提问来源于stack exchange,提问作者Charles Sosmeña

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:18:03