当没有人在与机器人的频道中时,我想断开我的机器人与频道的连接,所以我这样做了:
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
有没有办法解决这个问题?
答案 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()