如何使用新的 discord.py 版本获取不和谐服务器中所有成员的列表?

Posted

技术标签:

【中文标题】如何使用新的 discord.py 版本获取不和谐服务器中所有成员的列表?【英文标题】:How do I get a list of all members in a discord server using the new discord.py version? 【发布时间】: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 中的成员:不再起作用。谢谢你的帮助!

【问题讨论】:

你能发布相关异常吗? 【参考方案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

【讨论】:

以上是关于如何使用新的 discord.py 版本获取不和谐服务器中所有成员的列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何让不和谐机器人使用 discord.py 向消息添加表情符号反应?

使用 discord.py 获取不和谐服务器中所有成员的列表时出现问题

如何从不和谐中获取用户输入并将其存储为变量以在方程式中使用?不和谐.py

discord.py 你能从 discord 标签中获取用户对象吗?

使用 discord.py 解析嵌入不和谐的 json 数据

如何使用 discord.py 使用我的不和谐机器人编辑嵌入颜色