正如标题所说,我有一个加入语音频道的 discord.py 机器人,但我想添加某种检查,以便机器人沿着“已连接到语音频道”打印出一条消息,但我不能弄清楚如何检查它是否已连接。
代码:
@bot.command()
async def play(ctx):
audio_source = 'song.mp3'
voice_channel = discord.utils.get(ctx.guild.voice_channels, name=str(ctx.author.voice.channel))
await voice_channel.connect()
voice_client = discord.utils.get(bot.voice_clients, guild=ctx.guild)
voice_client.play(discord.FFmpegPCMAudio(audio_source))
感谢任何帮助!
答案 0 :(得分:1)
您可以像这样重新排列代码:
@bot.command()
async def play(ctx):
voice_client = discord.utils.get(bot.voice_clients, guild=ctx.guild)
if voice_client:
await ctx.send('Already connected to voice channel')
return
voice_channel = ctx.author.voice.channel
voice_client = await voice_channel.connect()
voice_client.play(discord.FFmpegPCMAudio('song.mp3'))
discord.utils.get
如果未找到任何内容,则返回 None
。在这种情况下,如果 voice_client
为 None
,则机器人未连接到任何频道。
但是,如果您的机器人已连接,voice_client
将是一个 discord.VoiceClient
对象,并且将执行 if
语句。