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

如何使用discord.py机器人断开语音频道用户连接及相关报错解决

问题修正方案

错误根源

  • 你的client是全局Bot实例,没有直接的guild属性,discord.py中Bot可接入多个服务器,不存在全局绑定的单个服务器对象
  • 你不需要从client层级获取成员对象,on_voice_state_update事件已经传入了当前触发事件的member实例,直接操作该实例即可

修正后代码

@client.event
async def on_voice_state_update(member, before, after):
    print(member)
    # 匹配目标用户
    if str(member) == "The_person_I_want_to_ban#his_code":
        # 先判断用户当前处于语音频道中,避免空值报错
        if member.voice:
            await member.voice.disconnect()

优化建议

  • 更稳妥的用户匹配方式是使用用户ID判断:if member.id == 目标用户的数字ID,不会因为用户修改昵称、标签导致匹配失效
  • 机器人需要提前在对应服务器获取「移动成员」权限,否则调用断开连接方法会抛出权限异常
  • 如果需要限定仅在指定服务器生效,可以补充服务器ID判断:if member.guild.id == 你的服务器数字ID

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:27:04