如何检查机器人是否已连接到频道? |不和谐

时间:2019-06-22 19:50:31

标签: discord.py voice

我已经决定尝试让不和谐的机器人播放音乐,但是我已经陷入困境。主要是由于我找不到任何可用于当前版本的资源的事实,所以我一直在关注文档中的所有内容。但是,我不知道如何检查该漫游器是否已连接到语音通道。

我尝试过middle2,但是没有用。如果有任何更新的资源可以帮助我了解discord.py语音功能的基础知识,请给我一个链接:)这是到目前为止的代码:

if not Client.is_connected():

ps:对不起,我只转储了整个vc部分,但我不太了解

这里真正重要的是播放命令,但是我包括其他命令只是因为(从我的评论中可以看到)我不了解发生了什么。我应该怎么做?当前版本有什么好的资源吗?预先感谢。

2 个答案:

答案 0 :(得分:1)

一个机器人可以同时连接到多个公会中的语音,因此您需要从Client.voice_clients获取VoiceClient的适当公会,然后检查VoiceClient.is_connected

def is_connected(ctx):
    voice_client = get(ctx.bot.voice_clients, guild=ctx.guild)
    return voice_client and voice_client.is_connected()

答案 1 :(得分:1)

你也可以

client.command()
async def join(ctx):
   user = ctx.message.author
   vc = user.voice.channel

   voice = discord.utils.get(client.voice_clients, guild=ctx.guild) # This allows for more functionality with voice channels

   if voice == None: # None being the default value if the bot isnt in a channel (which is why the is_connected() is returning errors)
      await vc.connect()
      await ctx.send(f"Joined **{vc}**")
   else:
      await ctx.send("I'm already connected!")