Discord.py Bot连接语音频道频繁断开(错误码4006)求助
Discord.py Bot语音连接报错4006(会话失效)解决方案
问题描述
Bot尝试加入语音频道时立即断开,报错信息如下:
Traceback (most recent call last): File ".venv/lib/python3.11/site-packages/discord/voice_state.py", line 413, in _inner_connect await self._handshake_websocket() File ".venv/lib/python3.11/site-packages/discord/voice_state.py", line 583, in _handshake_websocket await self.ws.poll_event() File ".venv/lib/python3.11/site-packages/discord/gateway.py", line 1037, in poll_event raise ConnectionClosed(self.ws, shard_id=None, code=self._close_code) discord.errors.ConnectionClosed: Shard ID None WebSocket closed with 4006
4006错误表示会话已失效,以下是连接瞬间触发该问题的常见排查与修复方案:
修复步骤
清理旧语音连接
每次加入频道前强制关闭已存在的连接,避免复用失效会话:if ctx.voice_client is not None: await ctx.voice_client.disconnect(force=True) await channel.connect()验证Bot权限
确保Bot在目标服务器拥有「连接语音频道」和「语音活动」权限,缺失权限会导致会话握手失败。更新discord.py及语音依赖
2.5.2版本可能存在网关兼容性问题,升级到最新稳定版并安装完整语音扩展:pip install --upgrade discord.py[voice]检查网络端口
Discord语音使用UDP 5000-65535端口,服务器防火墙或代理需放行这些端口,否则会阻断语音网关连接。重置Bot服务器会话
将Bot从服务器移除后重新邀请(勾选语音相关权限),重置服务器端的Bot会话状态后再测试连接。
内容的提问来源于stack exchange,提问作者person
相关产品推荐
相关产品推荐

