首页 > 解决方案 > Discord.py 成员的 ID

问题描述

我有一个 id 列表,我想获取成员列表。我该怎么做?我确实试过这个

        id_list=[]
        for i in amounts :
            if amounts[i] == 0 :
                id_list.append(i)
        for id in id_list:
            members = [discord.utils.get(bot.get_all_members(), id=id) for id in id_list]
            for member in members :
                await remove(member , mover ) #probleme here mover is a role


async def remove( member: discord.Member, role: discord.Role):
    await member.remove_roles(role)

标签: pythondiscord.py

解决方案


您的问题与您提供的代码不同。要获取特定成员,您可以执行以下操作:

member = discord.utils.get(bot.get_all_members(), id=MEMBER_ID_HERE)

或者,如果您有 ID 列表:

id_list = [112233445566778899, 224466881133557799 # etc...
members = [m for m in bot.get_all_members() if m.id in id_list]

后期编辑:
您可以让公会中没有特定角色的所有成员,并像这样删除角色:

@bot.command()
async def remove(ctx, role: discord.Role):
    members = [m for m in ctx.guild.members if role in m.roles]
    for m in members:
        await m.remove_roles(role)
    await ctx.send(f"Successfully removed {role.mention} from all users!")

从命令调用另一个异步函数:

async def remove(role: discord.Role):
    id_list = [112233445566778899, 224466881133557799 # etc...
    members = [m for m in bot.get_all_members() if m.id in id_list]
    for m in members:
        await m.remove_roles(role)

@bot.command()
async def cmd(ctx, role: discord.Role = None):
    if not role:
        role = discord.utils.get(ctx.guild.roles, id=112233445566778899)
    await remove(role) # you can also pass ctx if you need it in the function

参考:


推荐阅读