【问题标题】:discord.py: How to display number of servers bot is in?discord.py:如何显示机器人所在的服务器数量?
【发布时间】:2019-05-07 15:52:51
【问题描述】:

我多次尝试这样做,但没有成功。

Python 版本:3.6

discord.py: 异步

【问题讨论】:

    标签: python python-3.x discord discord.py


    【解决方案1】:

    试试这个@Avery B

    @client.command()
    async def serverlist(ctx):
    x = ', '.join([str(server) for server in client.guilds])
    y = len(client.guilds)
    print("Server list: " + x)
    if y < 40:
        embed = discord.Embed(title="Currently active on " + str(y) + " servers:", 
        description="```json\n" + x + "```", colour=0xFFFFF)
        return await ctx.send(embed=embed)
    

    【讨论】:

      【解决方案2】:

      我假设您已将机器人定义为 client

      client.guilds 是您的机器人所在的Guilds 列表。
      要获取列表中的项目数量(在您的情况下是服务器的数量),请使用 len(list)
      在您的情况下,这将是 len(client.guilds)

      您似乎也希望将其设置为状态,请参阅如何设置on the documentation
      不要更改on_ready() 中的状态!有关详细信息,请参阅上面的文档链接。

      【讨论】:

        【解决方案3】:

        要将其设置为机器人的状态,这将是一个示例:

        f"over {len(client.guilds)} servers.
        

        更多信息可以找到here

        【讨论】:

          【解决方案4】:
          @client.event #ready
          async def on_ready():
              print('Servers connected to:')
              for guild in client.guilds:
                  print(guild.name)
              await asyncio.sleep(3)
          
          

          【讨论】:

            【解决方案5】:

            由于我认为您正在尝试将其设置为 Playing 状态,这就是我为我的机器人所做的(在 Python 3.6 上完美运行): 因此,您的 on_ready 任务会告诉您机器人何时登录:

            @client.event
            async def on_ready():
                print('The bot is logged in.')
                await client.change_presence(activity=discord.Activity(type=discord.ActivityType.watching, name=f"{len(client.guilds)} servers!"))
            

            这将显示正在监视(服务器数量)服务器!在你的状态,但对于播放状态,你可以试试这个:

            @client.event
            async def on_ready():
                print('The bot is logged in.')
                await client.change_presence(activity=discord.Game(name=f"{len(client.guilds)} servers!"))
            
            
            

            【讨论】:

              【解决方案6】:

              试试这个;

              @client.command()
                  async def servers():
                      servers = list(self.client.servers)
                      await client.say(f"Connected on {str(len(servers))} servers:")
                      await client.say('\n'.join(server.name for server in servers))
              

              【讨论】:

                【解决方案7】:

                Client.servers 是机器人所属的 Server 对象的可迭代对象。您可以使用len 获得长度:

                len(client.servers)
                

                【讨论】:

                • 所以我可以使用它来获取它,但是我该如何实现它(让我的机器人在其名称旁边的 playing 部分中显示它?)
                猜你喜欢
                • 2020-06-26
                • 2021-06-02
                • 2020-11-19
                • 2021-04-13
                • 2020-09-30
                • 2021-03-19
                • 1970-01-01
                • 2021-02-12
                • 2022-01-25
                相关资源
                最近更新 更多