繁体   English   中英

如何在 python 中使用 discord 异步获取具有特定角色的 discord 服务器中所有用户的列表? (里面的代码)

[英]How do I get a list of all users in my discord server with a specific role using discord async in python? (code inside)

我有 python 代码来控制我的服务器中的一个机器人,该机器人在几周前一直在工作。 我有下面的代码,可以获取服务器中具有特定角色的所有人的列表,并将他们添加到列表中。 稍后我会用这个列表做一些事情。 代码如下:

@bot.command(pass_context = True)
async def getuserlist(ctx, useDiscordID : bool = False):   
memberlist = []
    for guild in bot.guilds:
        for member in guild.members:            
            for role in member.roles: 
                if role.name == "something" or role.name == "somethingelse":
                    if member.nick is None:
                        toAppend = member.name
                    else:
                        toAppend = member.nick
                    memberlist.append(str(toAppend))

出于某种原因,这停止了工作,而不是让所有用户都具有 something/somethingelse 角色,它当时只抓住服务器中任何语音通道中的用户。 我该如何解决?

您的问题可能是因为 discord.py 1.5.x Intents更新。 如果这是问题,你可以看看这个答案。

您可以只使用role.members来获取具有此角色的成员列表。 如果您的机器人仅在 1 个公会上运行,您可以执行以下操作:

@bot.command(pass_context = True)
async def getuserlist(ctx, useDiscordID: bool = False):   
    role1 = discord.utils.get(ctx.guild.roles, name='something')
    role2 = discord.utils.get(ctx.guild.roles, name='somethingelse')
    memberlist = role1.members + role2.members

如果它在多个行会上运行:

@bot.command(pass_context = True)
async def getuserlist(ctx, useDiscordID: bool = False):
    memberlist = []
    for guild in bot.guilds:
        role1 = discord.utils.get(guild.roles, name='something')
        role2 = discord.utils.get(guild.roles, name='somethingelse')
        if role1:
            memberlist += role1.members
        if role2:
            memberlist += role2.members

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM