discord.py |检查是否有加入语音通道的用户

时间:2020-10-28 08:53:55

标签: python-3.x discord discord.py

我正在尝试创建一个支持机器人,当用户连接支持渠道时加入语音支持渠道。

@client.command(aliases=['sup', 's'])
async def support(ctx):
    log = client.get_channel(id=701765882417774663)
    channels = ['bot-befehle']
    vc = client.get_channel(id=702412635127152686)
    global player

    if str(ctx.channel) in channels:

        try:
            player = await vc.connect()
        except:
            return

        player.play(discord.FFmpegPCMAudio('support.mp3'))
        player.source = discord.PCMVolumeTransformer(player.source)
        player.source.volume = 1.00
        await asyncio.sleep(30)
        player.stop()
        await player.disconnect()
        await log.send('Habe den Befehl "!support" erfolgreich ausgeführt.')
        print('Habe den Befehl "Support" erfolgreich ausgeführt.')

我不知道如何在语音通道中检查用户。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

您的解释有点双重。我将假设您不希望机器人自动加入,而只是在使用此命令后才能加入(否则该命令将无效)。

要检查是否有人在VoiceChannel中,可以使用它的members属性,该属性将返回通道中所有成员的列表。您可以简单地检查此列表是否为空。

@client.command(aliases=['sup', 's'])
async def support(ctx):
    log = client.get_channel(id=701765882417774663)
    channels = ['bot-befehle']
    vc = client.get_channel(id=702412635127152686)

    if not vc.members:
        return

    # ... rest of your code

这样,如果通道没有任何人连接,该命令将停止执行。

答案 1 :(得分:0)

导入不和谐

from discord.ext import commands

@commands.Cog.listener()

async def on_voice_state_update(self, member, before, after):

      if after.channel.id == channel_id and not member.bot:

         voice_client = await channel.connect()

         #do whatever you want here

       `