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

Discord机器人执行ctx.guild.voice_client.disconnect()无法断开语音频道

解决Discord机器人无法断开语音频道的问题

问题分析

你的代码已通过ctx.voice_client判断机器人处于语音频道,也执行了断开逻辑,但实际未退出频道,核心原因大概率是调用断开方法的对象不一致,或是缺少强制断开的参数。

修复方案

方案1:直接使用已确认的语音客户端实例

既然已经通过ctx.voice_client确认机器人在语音频道内,直接用该对象调用disconnect()能避免实例不一致问题,更可靠:

@bot.command(pass_context=True, help="make bot leave vc")
async def leave(ctx):
    if ctx.voice_client:
        await ctx.voice_client.disconnect()
        await ctx.send('disconnected from vc')
    else:
        await ctx.send('im not currently in a vc')

方案2:添加强制断开参数

如果方案1无效,可尝试在disconnect()中加入force=True参数,强制机器人断开连接,避免未完成的音频任务阻碍退出:

@bot.command(pass_context=True, help="make bot leave vc")
async def leave(ctx):
    if ctx.voice_client:
        await ctx.voice_client.disconnect(force=True)
        await ctx.send('disconnected from vc')
    else:
        await ctx.send('im not currently in a vc')

额外检查项

  • 确保Discord.py版本为最新,旧版本可能存在语音API bug,执行pip install --upgrade discord.py更新
  • 确认机器人在服务器内拥有基础语音权限(如连接、说话权限),权限不足可能导致断开逻辑异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 15:20:56