【问题标题】:How to get all members from my discord py server如何从我的不和谐 py 服务器获取所有成员
【发布时间】:2021-08-30 21:10:13
【问题描述】:

我想获取我服务器的所有成员,但是当我用谷歌搜索时,我发现这段代码 sn-p 会这样做:

for guild in client.guilds:                      
 for member in guild.members:                     
  print(member)

好吧,这段代码应该显示所有成员,问题是它只显示我的机器人用户。但是当我这样说的时候:

@tasks.loop(seconds=10)
async def counter():                                                                           
for guild in client.guilds:                      
 for member in guild.members:                     
  print(guild.members)

它在此对象[ ] 中显示信息,我不会完全显示它,因为在此对象中它包含有关我的帐户和不和谐服务器的信息,所以我如何更改此代码以便它显示成员数量还是成员的名字?

【问题讨论】:

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


    【解决方案1】:

    打印guild.member 返回一个discord.Member 对象,其中包含大量信息。以下是您希望选择的方式:

    获取成员数:

    for guild in client.guilds:
        print(len(guild.members))
    

    获取成员名称:

    for guild in client.guilds:
        for member in guild.members:
            print(member.name)
    

    另外我建议减少循环时间以避免速率受限。

    【讨论】:

    • 你好,你的代码给了我同样的结果,我的服务器上有 3 个用户,我,我的机器人和一个朋友,但是我的机器人只计算自己,它不计算我的用户和我的朋友,它不显示名字,你答案的第一个代码的结果是 1,它应该是 3,因为我的服务器上有 3 个用户,包括机器人,第二个代码在你的答案中,它显示我的代码的用户名,而不是显示我和我的朋友,为什么会发生这种情况?
    • 您似乎没有为您的机器人启用 Intent,请阅读本指南以了解启用它们:discordpy.readthedocs.io/en/latest/intents.html
    • 它没有启用,但我启用了它,即便如此,当我尝试显示用户名时,它只显示我自己的机器人的用户名,而不是所有成员,我该如何解决?
    • 您是否也在代码和开发门户中启用了?您需要在声明 commands.Bot 时添加 client.intents = discord.Intents.all(),然后从开发门户启用。
    • client = commands.Bot(intents = discord.Intents.all(), **kwargs)
    【解决方案2】:

    正如我在问题中指出的那样,成员计数如何在对象 [] 中,我访问了该对象的属性,然后我设法获取了所有成员,这就是代码:

    for guild in client.guilds:
     print(guild.member_count)
    

    【讨论】:

      【解决方案3】:

      你的方法是正确的:

      for guild in client.guilds:
          print(guild.member_count)
      

      但您可以在文档中看到 here

      由于 Discord 的限制,为了使该属性保持最新和准确,它需要指定 Intents.members。

      因此,您必须在代码中启用成员意图并在developer portal 中启用特权意图

      intents = discord.Intents.default()
      intents.members = True
      
      #or 
      intents = discord.Intents.all()
      
      client = commands.Bot(command_prefix='!', intents=intents)
      

      成员意图用于以下用途:link

      这对应于以下事件:

      • on_member_join()

      • on_member_remove()

      • on_member_update()(昵称、角色)

      • on_user_update()

      这在术语上也对应于以下属性和类 缓存:

      • Client.get_all_members()

      • Guild.chunk()

      • Guild.fetch_members()

      • Guild.get_member()

      • Guild.members

      • 成员角色

      • 会员.nick

      • Member.premium_since

      • 用户名

      • User.avatar(User.avatar_url 和 User.avatar_url_as())

      • 用户鉴别器

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-05
        • 2021-11-18
        • 1970-01-01
        • 1970-01-01
        • 2019-10-24
        相关资源
        最近更新 更多