Как получить список участников из определенной роли с !getuser
команды !getuser
в канале !getuser
.
@bot.command(pass_context=True)
async def getuser(ctx):
бот отвечает своим ID
1. @user1#123
2. @user2#123
Переписывающая ветвь предоставляет атрибут Role.members
.
В ветке async вам нужно будет пройти через все члены сервера и проверить их роли.
@bot.command(pass_context=True)
async def getuser(ctx, role: discord.Role):
role = discord.utils.get(ctx.message.server.roles, name="mod")
if role is None:
await bot.say('There is no "mod" role on this server!')
return
empty = True
for member in ctx.message.server.members:
if role in member.roles:
await bot.say("{0.name}: {0.id}".format(member))
empty = False
if empty:
await bot.say("Nobody has the role {}".format(role.mention))
Надеемся, что более быстрое и понятное решение, чем предыдущее
@bot.command(pass_context=True)
async def getuser(ctx,*args):
server = ctx.message.server
role_name = (' '.join(args))
role_id = server.roles[0]
for role in server.roles:
if role_name == role.name:
role_id = role
break
else:
await bot.say("Role doesn't exist")
return
for member in server.members:
if role_id in member.roles:
await bot.say(f"{role_name} - {member.name}")
ctx.message.server
"{0.name}#{0.discriminator}".format(member)