简体   繁体   English

获取具有特定角色 discord bot 的所有成员的列表

[英]get list of all members with specific role discord bot

i want the bot send all member with role named weed but intead it send only bot name我希望机器人向所有成员发送名为 weed 的角色,但它只发送机器人名称

my code:我的代码:

@commands.command(pass_context=True)
    @commands.has_permissions(manage_messages=True)
    async def mom(self,ctx, *args):
        server = ctx.message.guild
        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 ctx.send("Role doesn't exist")
            return
        for member in server.members:
            if role_id in member.roles:
                await ctx.send(f"{member.display_name} - {member.id}")

You can simply use role.members您可以简单地使用role.members

@commands.command()            # ↓ This will make sure that the argument passed is a discord.Role object
async def mom(self, ctx, role: discord.Role):
    members = role.members
    for member in members:
        await ctx.send(f'{member.display_name} - {member.id}')

Reference:参考:

I believe there is something called role.members which returns all the members with the role "role".我相信有一个叫做role.members东西,它返回所有具有“角色”角色的成员。 Here is an example of the code:以下是代码示例:

@commands.command(pass_context=True)
@commands.has_permissions(manage_messages=True)
async def mom(self,ctx, *args):
    server = ctx.message.guild
    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 ctx.send("Role doesn't exist")
            return
    for member in role.members:
        await ctx.send(f"{member.display_name} - {member.id}")

Try to replace your command with this one.尝试用此命令替换您的命令。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM