Discord.py从列表中创建角色

时间:2018-08-05 02:44:22

标签: 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_roles(member, role)
    await client.say("Role added! {}".format(member.mention))

这是我得到的代码,但这将分配服务器中的任何角色,因为那显然是我所分配的角色。香港专业教育学院玩弄其他事情,但我得到一个错误,'str'对象没有属性'id'错误。

1 个答案:

答案 0 :(得分:0)

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

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")