首页 > 解决方案 > 查找给定角色中的所有用户 discord.py

问题描述

所以我想制作一个程序来查找给定角色的所有用户,比如如果 roll a 有成员 1、2、3、4,而 roll b 有成员 2、3 我希望代码给出输出 2、3

这是列出这些用户(提及)的主要代码

@bot.command()
@commands.has_role('Admins')
async def find(ctx,*, name):
  guild=ctx.guild
  roles=name.split(",")
  role=get(guild.roles, name=roles[0])
  members=role.members
  for role in roles[1:]:
    role = get(guild.roles, name=role.strip(" "))
    lm=role.members
    for i in members:
      if i not in lm:
        members.remove(i)

        
  l=[f"{role.mention}" for role in members]   
  print(l)

有人可以帮我找出代码中的错误吗?当我放弃 b 时,我得到了正确的输出,而不是当它 a,b 时

标签: pythondiscorddiscord.py

解决方案


显然使用集合和交集解决了这个问题,不知道它是如何工作的,但它确实

@bot.command()
@commands.has_role('Admins')
async def find(ctx,*, name):
  guild=ctx.guild
  roles=name.split(",")
  role=get(guild.roles, name=roles[0])
  members=set(role.members)
  for role in roles[1:]:
    role = get(guild.roles, name=role.strip(" "))
    lm=set(role.members)
    members=members.intersection(lm)

        
  l=[f"{role.mention}" for role in members]   
  print(l)

推荐阅读