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

Discord.py:如何让机器人在语音频道独处时自动断开?是否有对应触发事件?

实现Discord.py机器人语音频道独处自动断开&用户离开事件说明

嘿,我来帮你搞定这个需求!首先直接回答你的第二个问题:确实存在每次用户离开语音频道时触发的事件,就是Discord.py里的on_voice_state_update事件——只要用户的语音状态发生变化(包括离开频道、加入频道、静音/取消静音等),这个事件都会被触发,我们正好可以用它来实现“独处自动断开”的逻辑。

1. 核心事件:on_voice_state_update

这个事件接收三个参数:

  • member:状态发生变化的用户对象
  • before:用户状态变化前的语音状态(包含之前所在的频道等信息)
  • after:用户状态变化后的语音状态(包含之后所在的频道等信息)

我们可以通过判断before.channel不为空、after.channel为空,来精准捕捉“用户离开某语音频道”的行为。

2. 实现独处自动断开的完整代码示例

下面是一个可直接复用的代码片段,包含了完整的逻辑:

import discord
from discord.ext import commands

# 必须开启对应的Intents,否则监听不到语音状态变化
intents = discord.Intents.default()
intents.voice_states = True  # 监听语音状态变化的关键权限
intents.members = True       # 获取频道成员列表需要这个权限(部分Discord.py版本可能要求)

bot = commands.Bot(command_prefix="!", intents=intents)

@bot.event
async def on_voice_state_update(member, before, after):
    # 只处理"用户离开语音频道"的情况
    if before.channel is not None and after.channel is None:
        # 检查机器人是否在用户离开的这个频道里
        vc_client = before.channel.guild.voice_client
        if vc_client is not None and vc_client.channel == before.channel:
            # 统计频道内的人类成员(排除其他机器人)
            human_members = [m for m in vc_client.channel.members if not m.bot]
            # 如果频道里已经没有人类用户了,自动断开
            if len(human_members) == 0:
                await vc_client.disconnect()
                print(f"已自动断开语音频道「{vc_client.channel.name}」——频道内无其他人类用户")

@bot.event
async def on_ready():
    print(f"机器人已登录:{bot.user.name}(ID:{bot.user.id})")
    print("------------------------")

# 替换成你的机器人Token
bot.run("YOUR_BOT_TOKEN_HERE")

3. 关键注意事项

  • Intents权限配置:一定要在代码里开启voice_states和members权限,同时还要去Discord开发者后台的机器人页面,开启对应的Privileged Gateway Intents,否则机器人会监听不到语音状态变化,也无法获取完整的成员列表。
  • 成员统计逻辑:代码里过滤了机器人成员,如果你需要的是“只要频道里只剩当前机器人(不管有没有其他机器人)”,可以把统计逻辑改成len(vc_client.channel.members) == 1(因为机器人自己算一个成员)。
  • 额外场景处理:如果需要处理“机器人刚加入频道就没人”的情况,可以在机器人加入频道的逻辑里加一个定时检查,或者在on_voice_state_update里同时监听机器人自己的状态变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 23:48:11