当前位置: 首页 > 知识库问答 >
问题:

不一致py discord bot循环功能仅适用于一台服务器

古起运
2023-03-14

我的discord中的循环函数有问题。小机器人。我希望在每个连接的服务器上的特定时间播放音乐。我的代码通过检查时间是否正确来工作,然后在服务器上找到第一个有一些用户的语音频道,加入它,播放音乐并断开连接。我的问题是,它只加入“协会”列表中的第一个服务器,即它被邀请首先加入的服务器。有没有办法让机器人在所有被邀请的服务器上工作,而不仅仅是在第一台服务器上?

以下是循环函数的代码:

@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

共有1个答案

麹高义
2023-03-14

您好,我认为您的代码中的问题是,您正在打破通过所有公会的for循环,因此您需要删除第28行中不需要的break语句,它应该像一个符咒一样工作。

 类似资料:
  • 我创建了一个简单的测试,用户使用OpenAm登录系统,然后注销。我把我的线程组放在一个循环中工作,在第一次迭代中它工作正常。但当它进入下一次迭代时,我的测试失败了,因为有人试图登录,当然他不能。 我有15个用户证书并创建了。jks文件基于它们。用户名是,例如“hperfteste001”等等。我配置了“Keystore Configuration”配置元素,并在系统中提供了路径和密码。属性文件 我

  • 我在pgsql上有一个名为(超过100万行)的表,但我也有很多重复项。我选择了3个字段:,,。 我想用和随机选择它们,所以我这样做是为了在我的PHP脚本中节省一些内存。 但我如何才能做到这一点,这样它只会给我一个名单,没有重复的名字。 例如,将返回,但不会返回。名称字段是最重要的,每次我选择时必须在列表中唯一,并且必须是随机的。 我试过使用,但它希望我在中或在一个加积函数中也有id和元数据,但我不

  • 问题内容: 我正在尝试实现一个每秒循环的ScheduledExecutorService线程,但是截至目前,它仅循环一次。 我的问题是如何设置它,使其定期循环而不是一次迭代? 另外,如何将连接池传递到线程中,以便每次迭代都可以查询数据库?任何帮助深表感谢。 问题答案: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent

  • 问题内容: 完成ajax查询后,我在下面有以下javascript 我所有的图像都有名称=“ pic” 我的目标是在使用此库的周围应用图像边框: http://www.netzgesta.de/instant/ 问题在于,由于某种原因,这可行,但似乎仅适用于其他所有图片,而不是其他所有图片。任何线索为什么上面的代码会跳过其他所有元素? 编辑:我在循环中添加了一个警报,它确实正确地转到0,1,2,3

  • Navicat 提供“服务器监控”提供来查看已选择的服务器的属性。从菜单栏选择“工具”->“服务器监控”并选择你想要的服务器类型。 【注意】仅适用于 MySQL、Oracle、PostgreSQL、SQL Server 、MariaDB 和 MongoDB。 进程列表 此选项卡以列表显示所有已选择的服务器的进程。进程列表提供以下的信息。它是根据你所选择的数据库类型而定。 在设置连接时提供的服务器名

  • Navicat 提供“服务器监控”提供来查看已选择的服务器的属性。从菜单栏选择“工具”->“服务器监控”并选择你想要的服务器类型。 【注意】仅适用于 MySQL、Oracle、PostgreSQL、SQL Server、MariaDB 和 MongoDB。 进程列表 此选项卡以列表显示所有已选择的服务器的进程。进程列表提供以下的信息。它是根据你所选择的数据库类型而定。 在设置连接时提供的服务器名。