Discord bot 无法断开连接 - python 3.8

时间:2021-03-10 13:36:06

标签: python discord discord.py

当没有人在与机器人的频道中时,我想断开我的机器人与频道的连接,所以我这样做了:

async def check():
    member_count = len(client.voice_clients)
    if not member_count > 1:
        await voice.disconnect()

此函数每 60 秒被调用一次

它给了我这个错误: NameError: name 'voice' is not defined

所以我添加了离开功能的语音定义:

async def check():
    voice = discord.utils.get(client.voice_clients, guild=ctx.guild)
    member_count = len(client.voice_clients)
    print(member_count)
    if not member_count > 1:
        await voice.disconnect()

但它给了我新的错误: NameError: name 'ctx' is not defined

有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:0)

ctx 是由 discord.command 系统提供的命令上下文。对于内部任务,您不能使用它,因为它没有引起机器人活动的实际消息。

要解决您的问题,您必须以不同的方式访问您的公会。例如通过 client.guilds 或 client.get_guild(guild_id)

答案 1 :(得分:0)

我找到了解决方案:

async def on_voice_state_update(member, before, after):
    voice_state = member.guild.voice_client
    if voice_state is None:
        return

    if len(voice_state.channel.members) == 1:
        await voice_state.disconnect()