获取所有成员 discord.py

新手上路,请多包涵

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

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

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

谢谢!

原文由 Jonathan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 802
2 个回答

听起来像是 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

原文由 stijndcl 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

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

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

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

原文由 FluxedScript 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题