问题描述
我想给我的一些朋友们主题曲,并且已经可以使用下面的代码来实现
@commands.Cog.listener()
async def on_voice_state_update(ctx,member,before,after):
if member.name in theme_songs.keys():
voice = await member.voice.channel.connect()
voice.play(discord.FFmpegPCMAudio(source=f"theme_songs/{theme_songs[member.name]}"))
问题是每当发生任何事情(即静音,上线等)时,机器人都会被激活。 我该怎么做,以便只寻找成员加入?
编辑
if before.channel != after.channel:
它变成
@commands.Cog.listener()
async def on_voice_state_update(self,after):
if before.channel != after.channel:
if member.name in theme_songs.keys():
voice = await after.channel.connect()
voice.play(discord.FFmpegPCMAudio(source=f"theme_songs/{theme_songs[member.name]}"))
解决方法
尝试添加另一个if
,以检查他们是否加入了频道
@commands.Cog.listener()
async def on_voice_state_update(ctx,member,before,after):
if before.channel is None:
if member.name in theme_songs.keys():
voice = await member.voice.channel.connect()
voice.play(discord.FFmpegPCMAudio(source=f"theme_songs/{theme_songs[member.name]}"))