【问题标题】:How to check if Discord.py bot is already connected to voice channel?如何检查 Discord.py bot 是否已连接到语音通道?
【发布时间】:2021-08-05 14:03:18
【问题描述】:

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

任何帮助表示赞赏!

【问题讨论】:

    标签: python discord.py


    【解决方案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 语句。

    【讨论】:

      猜你喜欢
      • 2020-12-06
      • 2020-05-31
      • 2022-01-05
      • 2020-09-06
      • 1970-01-01
      • 1970-01-01
      • 2017-07-31
      • 2020-02-19
      • 2021-03-30
      相关资源
      最近更新 更多