【问题标题】:Discord.py discord bot loop function works only for one serverDiscord.py 不和谐机器人循环功能仅适用于一台服务器
【发布时间】: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


    【解决方案1】:

    您好,我认为您的代码中的问题是您正在跳出遍历所有行会的 for 循环,因此您需要在第 28 行删除不需要的 break 语句,它应该像一个魅力一样工作。

    【讨论】:

    • 删除“break”只是部分帮助,现在机器人加入了其他服务器,但是当它加入一个服务器时,它不会加入另一个服务器,就好像它在等待一个音乐播放结束一样服务器,然后想去下一个。
    猜你喜欢
    • 2020-05-25
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 2023-02-14
    • 2018-11-17
    • 2021-03-10
    • 1970-01-01
    相关资源
    最近更新 更多