Discord.py 如何在没有 ctx 的情况下离开频道

时间:2021-07-03 02:02:55

标签: python discord

这是一个 Discord bot 功能,应该在有人加入时加入语音频道,播放一首歌曲 5 秒然后离开频道。

问题是使用@bot.event 时我无法将上下文传递给它,所以我找到了一种与 after arg 连接的方法,但我找不到离开频道的方法。

 @bot.event                                                                                                                                                                                           
     async def on_voice_state_update(member, before, after):                                                                                                                                              
         if not before.channel and after.channel:                                                                                                                                                         
             await after.channel.connect()                                                                                                                                                                
             voice = discord.utils.get(bot.voice_clients)                                                                                                                                                 
             voice.play(discord.FFmpegPCMAudio("song.mp3"))                                                                                                                                               
             time.sleep(5)                                                                                                                                                                                
             await after.channel.disconnect()

它说

AttributeError: 'VoiceChannel' object has no attribute 'disconnect

我知道我做这个功能的方式可能是错误的,所以如果你们知道“正确”的方式,我希望你们会注意到我。

1 个答案:

答案 0 :(得分:1)

我发现这种不传递上下文就离开语音通道的方法:

 @bot.event                                                                                                                                                                                           
 async def on_voice_state_update(member, before, after):                                                                                                                                              
     if not before.channel and after.channel:                                                                                                                                                         
         await after.channel.connect()                                                                                                                                                                
         voice = discord.utils.get(bot.voice_clients)                                                                                                                                                 
         voice.play(discord.FFmpegPCMAudio("song.mp3"))                                                                                                                                               
         time.sleep(5)                                                                                                                                                                                
         await voice.disconnect()