我正在尝试创建一个支持机器人,当用户连接支持渠道时加入语音支持渠道。
@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.')
我不知道如何在语音通道中检查用户。有人可以帮忙吗?
答案 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
`