Discord.py从列表中创建角色

Discord.py从列表中创建角色,discord.py,Discord.py,我看过一些关于如何将角色赋予用户的示例,但这些示例都是将角色硬编码到add_role函数中。我想帮助您编写一个命令,允许用户根据列表自行分配角色 @client.command(pass_context = True) async def assign(ctx, role): member = ctx.message.author role = discord.utils.get(member.server.roles, name = role) await client

我看过一些关于如何将角色赋予用户的示例,但这些示例都是将角色硬编码到add_role函数中。我想帮助您编写一个命令,允许用户根据列表自行分配角色

@client.command(pass_context = True)
async def assign(ctx, role):
    member = ctx.message.author
    role = discord.utils.get(member.server.roles, name = role)
    await client.add_roles(member, role)
    await client.say("Role added! {}".format(member.mention))

这是我得到的代码,但这会分配服务器中的任何角色,因为这就是我分配的角色。我玩过其他东西,但遇到了一个错误,“str”对象没有属性“id”错误。

您可以定义角色名称的白名单,然后在分配角色之前对照该名单进行检查。在下面的示例中,我也使用了,但您也可以查找名称

roles_whitelist = ['librarian', 'treasurer', 'secretary']

@client.command(pass_context = True)
async def assign(ctx, role: discord.Role):
    member = ctx.message.author
    if role.name.lower() in roles_whitelist:
        await client.add_roles(member, role)
        await client.say("Role added! {}".format(member.mention))
    else:
        await client.say("Cannot add that role")