我已经看到,您可以使用使用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>
(必须兼容才能使用多个单词)
输出:我可以整理出它发送的消息。
答案 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)