获取所有成员 discord.py

Get all members discord.py

我有一个问题,我需要从机器人在线的所有服务器中获取所有成员的列表(我正在使用 discord.py 重写),现在我已经截取了这段代码:

@bot.command()
async def members(ctx):
    for guild in bot.guilds:
        for member in guild.members:
            print(member)

程序输出了 3 次机器人名称,因为机器人在 3 个服务器上。

谢谢!

听起来像是 Intents 问题。您需要在创建 commands.Bot 实例时启用 members 意图,并将您的意图传递给它。

intents = discord.Intents.default()
intents.members = True

client = commands.Bot(intents=intents, prefix_and_other_things_go_here)

您还必须在开发人员门户中启用它。有关方式和地点的更多信息:https://discordpy.readthedocs.io/en/latest/intents.html

您的代码是正确的。但是你需要 Members Intent

您必须启用它 here。 Select 你想要它的应用程序 -> Select Bot -> 服务器成员意图然后确保它旁边显示蓝色。然后单击保存更改。由于您正在开发您的机器人,您可能还想启用 Presence 意图以节省您以后的时间。

然后您必须像这样编辑机器人变量:

intents = discord.Intents()
intents.all()

bot = commands.Bot(command_prefix=".", intents=intents)

这是一个单行解决方案

@client.command()
async def getmember(ctx,member:str):
    print([i.name+'#'+i.discriminator for i in ctx.message.guild.members if member in i.name+'#'+i.discriminator])