我已经看到了有关如何向用户赋予角色的示例,但是这些示例将角色硬编码到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'错误。
答案 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")