【发布时间】:2021-10-26 01:30:14
【问题描述】:
我的 discord.py 机器人中的循环函数有问题。我希望在每个连接的服务器上的特定时间播放音乐。我的代码通过检查时间是否正确来工作,然后在服务器上找到一些用户的第一个语音频道,加入它,播放音乐并断开连接。我的问题是它只加入了“公会”列表中的第一台服务器,也就是它被邀请加入的第一台服务器。有什么方法可以让机器人在它被邀请的所有服务器上工作,而不仅仅是第一个?
这是循环函数的代码:
@tasks.loop(seconds = 5)
async def loop():
guilds = client.guilds
print (guilds)
for guild in guilds:
voice_channel_list = guild.voice_channels
for i in range(len(voice_channel_list)):
channel = client.get_channel(voice_channel_list[i].id)
curMembers = []
for member in channel.members:
curMembers.append(member)
if (len(curMembers) > 0 and datetime.datetime.now().strftime("%H:%M")=="22:22"):
await channel.connect()
voice = discord.utils.get(client.voice_clients, guild=guild)
if(randrange(1,100) <= 30):
voice.play(discord.FFmpegPCMAudio(source="sounds/music1.mp3"))
while voice.is_playing():
await sleep(1)
await voice.disconnect()
else:
voice.play(discord.FFmpegPCMAudio(source="sounds/music2.mp3"))
while voice.is_playing():
await sleep(1)
await voice.disconnect()
break
break
【问题讨论】:
标签: python discord discord.py bots