【问题标题】:How do I get a list of all members in a discord server using the new discord.py version?如何使用新的 discord.py 版本获取不和谐服务器中所有成员的列表?
【发布时间】:2019-10-24 11:06:24
【问题描述】:

我最近更新了我的 discord.py,但我的一些旧命令似乎是错误的。我需要遍历不和谐服务器的所有成员,但是我这样做的旧方法不再起作用。这是我的旧代码。

@bot.command(pass_context = True)
async def missing(ctx, channel : str = None, useDiscordID : bool = False):
    memberlist = []
    for member in message.server.members:
        toAppend = ''
        if "barcode" in [y.name.lower() for y in member.roles]:
            if member.nick is None:
                toAppend = member.name
           else:
                toAppend = member.nick
            if useDiscordID:
                toAppend = f'{str(member)} : {toAppend}'
            memberlist.append(toAppend)

这是代码中不起作用的部分,我不知道循环服务器所有成员的新方法是什么,因为 message.server.members 中的成员:不再起作用。谢谢你的帮助!

【问题讨论】:

  • 你能发布相关异常吗?

标签: python discord discord.py


【解决方案1】:

migration guide 提到 server 已重命名为 guild。正确的代码应该是message.guild.members

【讨论】:

    【解决方案2】:

    在 sn-p 下方将返回一个生成器,其中包含客户端的每个“成员”,即您的机器人可以看到的所有服务器,该机器人是其成员。

    @client.event
    async def on_message(message):
        if message.content.startswith('!member'):
            for guild in client.guilds:
                for member in guild.members:
                    print(member) # or do whatever you wish with the member detail
    

    【讨论】:

    • 没有得到完整的列表。
    【解决方案3】:

    他们对此进行了安全更新。

    我引用

    目前,这也需要通过开发者门户明确选择加入。 100 多个公会中的机器人需要向 Discord 申请验证。

    因此,首先您需要进入您的开发者帐户并检查 Servers Member Intent 选项。

    然后调用以下代码:

    m2 = await g.fetch_members(limit=None).flatten()
     
    

    其中 g 是上面检索到的公会对象。 上述方法只返回一个用户。

    为了安全起见,我还在代码开头做了以下操作:

    # these are the modules imported
    from discord.ext.commands.bot import Bot
    import discord
    # just for reference
    
    discord.MemberCacheFlags.all()
    
    bot = Bot("$")
    
    # the bots flags and the global intents flags set to True
    # explicitly.
    bot.intents.members=True
    Intents.members=True
    

    有趣的是,以下所有方法都不起作用,只有 api 调用为我返回超过 1 个成员。

    guild.members
    bot.get_all_members():
    bot.users
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-23
      • 2020-11-27
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多