Discord.py Id到成员

2024-05-12 10:20:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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)

Tags: inid列表forget成员awaitremove
1条回答
网友
1楼 · 发布于 2024-05-12 10:20:50

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

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

参考文献:

相关问题 更多 >