如何检查 Discord.py bot 是否已经连接到语音通道?

时间:2021-05-15 19:31:53

标签: python discord.py

正如标题所说,我有一个加入语音频道的 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))

感谢任何帮助!

1 个答案:

答案 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_clientNone,则机器人未连接到任何频道。

但是,如果您的机器人已连接,voice_client 将是一个 discord.VoiceClient 对象,并且将执行 if 语句。