邀请Bot进入语音通道,不使用ctx



我想知道是否有一种方法可以使机器人加入vc,如果在特定的语音通道中有一个成员。但是,我不希望用户使用命令来激活它。

async def arrive(ctx):
bruh = client.get_channel(748685131119591506)
curMembers = []
for member in bruh.members:
curMembers.append(member)
channel = ctx.author.voice.channel
vc = await channel.connect()
boi = len(curMembers)
room = discord.Object(748685131119591506)
if boi == 1 and room: 
await ctx.send("Dang everyone left :pensive:")
await ctx.voice_client.disconnect()
elif boi == 1:
await vc.move_to(room)

@tasks.loop(seconds=5)
async def looparrive(ctx):
client.loop.create_task(arrive(ctx))

此到达代码附加到client.command(),因为我不知道如何以其他方式传递上下文。这个机器人只需要在一台服务器上工作,所以任何帮助都会很感激。

你可以做类似的事情:

async def arrive():
guild = client.get_guild(GUILDID)
text_channel = client.get_channel(TEXTCHANNELID)
voice_channels = guild.voice_channels
for vc in voice_channels:
if len(vc.members) == 1:
vClient = await vc.connect()
await text_channel.send("Dang everyone left :pensive:")
await vClient.disconnect()

@tasks.loop(seconds=50)
async def looparrive():
await arrive()

一个5秒的循环似乎有点激进,所以我建议提高它,以避免这个过程被大量垃圾。

最新更新