Python 按名称查找角色id不一致重写

Python 按名称查找角色id不一致重写,python,discord.py,discord.py-rewrite,Python,Discord.py,Discord.py Rewrite,现在,我正在为我的discord bot编写一个命令,在该命令中,我创建了一个以用户命名的角色,然后自动将其分配给该用户。我遇到的唯一问题是,试图在不知道角色id的情况下将角色分配给提到的人。 到目前为止,我的命令是: @client.command(aliases = ["cmr", "CMR"]) @commands.has_permissions(manage_roles=True) async def creatememberrole(ctx, *

现在,我正在为我的discord bot编写一个命令,在该命令中,我创建了一个以用户命名的角色,然后自动将其分配给该用户。我遇到的唯一问题是,试图在不知道角色id的情况下将角色分配给提到的人。 到目前为止,我的命令是:

@client.command(aliases = ["cmr", "CMR"])
@commands.has_permissions(manage_roles=True)
async def creatememberrole(ctx, *, member:discord.Member):
    author = ctx.message.author
    guild = ctx.guild
    print(author.display_name)
    await guild.create_role(name=str(member.display_name))
    await member.add_roles()
          #need help here ^


您可以浏览所有角色的列表,找到您创建的角色并分配此角色。下面是一个例子:

for role in message.channel.guild.roles:
    if role.name == str(member.display_name):
        await member.add_roles(role)

可以通过
utils完成。轻松获取
,无需for循环

role=discord.utils.get(ctx.guild.roles,name=member.display\u name)
等待成员。添加_角色(角色)
在您的情况下,不需要任何for循环/utils.get,只需将
create_role()
方法分配给变量并使用该变量即可

@client.command(别名=[“cmr”,“cmr”])
@commands.has_权限(manage_roles=True)
异步def creatememberrole(ctx,*,成员:discord.member):
author=ctx.message.author
guild=ctx.guild
打印(作者、显示名称)
角色=等待公会。创建角色(name=str(member.display\u name))
等待成员。添加_角色(角色)

谢谢!以前的for循环确实让它变得更复杂了,随时都可以提供帮助!