使用discord.py,如何向角色名称中包含空格的用户添加角色?

时间:2019-01-22 17:47:49

标签: python discord.py

我已经看到,您可以使用使用discord.py的机器人添加角色。我想编写代码,以便您可以添加名称中包含多个单词的角色,以便在命令为-giverole首席执行官时不会出现诸如“找不到角色“首席””的错误。我还想添加另一个参数,您可以在其中ping您要向其授予角色的用户。

这是给我的不和谐服务器使用的。我有一个可以给您一个角色的工作代码(无论执行命令的人),而且角色只能是一个词: “会员”

@client.command(pass_context=True)
async def giverole(ctx, role: discord.Role):
    await client.add_roles(ctx.message.author, role)

输入:-giverole <mention_user> <role_name>(必须兼容才能使用多个单词)

输出:我可以整理出它发送的消息。

2 个答案:

答案 0 :(得分:0)

您可以使用converter获取Member来发送角色,就像您使用它来获取Role本身一样。要接受多个单词的角色,请使用keyword-only argument syntax。您也可以在调用命令时使用角色提及。 (例如!giverole @Patrick @Chief Executive Officer)。

@client.command(pass_context=True)
async def giverole(ctx, member: discord.Member, *, role: discord.Role):
    await client.say(f"Giving the role {role.mention} to {member.mention}")
    await client.add_roles(member, role)

答案 1 :(得分:-1)

您可以使用discord.utils.get从字符串中获取角色,在这种情况下为role_name

@client.command(pass_context=True)
async def giverole(ctx, *,role_name:str):
  role = discord.utils.get(ctx.message.server.roles, name=role_name)
  await client.add_roles(ctx.message.author, role)