簡體   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