运行代码提示'Context' object has no attribute 'voice'错误如何解决?
问题原因
这个是discord.py版本迭代导致的属性迁移问题:
- 你看的YouTube教程用的是discord.py v1.x版本,该版本里
Context对象确实包含voice属性 - 你当前安装的是discord.py v2.0及以上版本,官方已经将
Context.voice属性移除,语音客户端实例需要从服务器对象中获取
解决方法
方法1:适配v2.x版本(推荐)
把你第74-76行代码里所有调用ctx.voice的地方,替换为ctx.guild.voice_client即可。
方法2:降级到和教程匹配的版本
如果不想修改代码,直接运行以下命令安装v1.7.3版本即可:pip install discord.py==1.7.3
注意:discord.py v1.x已经停止官方维护,长期使用更建议适配v2.x的语法规则。
额外排查项
如果修改后依然有相关报错,检查两个配置:
- Discord开发者后台的Bot设置页,已开启
Privileged Gateway Intents分类下的Voice States Intent - 代码初始化Bot实例时,已传入
intents.voice_states = True参数
内容的提问来源于stack exchange,提问作者Nut Nuttawut
相关产品推荐
相关产品推荐

