这是一个 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
我知道我做这个功能的方式可能是错误的,所以如果你们知道“正确”的方式,我希望你们会注意到我。
答案 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()