Python 我如何获得discord.py中角色的名称
我创建了一个addrole命令。它工作得很好,但我的问题是它只在角色id的情况下工作。我想知道如何将角色的id转换为角色的名称。 这是代码。Python 我如何获得discord.py中角色的名称,python,discord,discord.py,Python,Discord,Discord.py,我创建了一个addrole命令。它工作得很好,但我的问题是它只在角色id的情况下工作。我想知道如何将角色的id转换为角色的名称。 这是代码。 @commands.has_permissions(manage_messages=True) async def addrole(self, ctx, member: discord.Member,rolename): if member is None: member=ctx.author
@commands.has_permissions(manage_messages=True)
async def addrole(self, ctx, member: discord.Member,rolename):
if member is None:
member=ctx.author
role = discord.utils.get(ctx.guild.roles, id=rolename)
await member.add_roles(role)
await ctx.send(f"{member.mention}was added {rolename}")
谢谢你的帮助
解决方案
我使用了这两条注释并创建了这个命令,它工作得非常好
@commands.command()
@commands.has_权限(manage_messages=True)
异步def addrole(self,ctx,role:discord.role,member:discord.member=None):
如果成员为无:
成员=ctx.author
等待成员。添加_角色(角色)
wait ctx.send(f“{member.notice}已添加{role}”)```
您可以将rolename
变量声明为discord.Role
,并使用将应用的隐式变量,就像对成员发生的事情一样。您的函数如下所示:
@commands.具有权限(manage\u messages=True)
异步def addrole(self,ctx,成员:discord.member,角色:discord.role):
等待成员。添加_角色(角色)
wait ctx.send(f“{member.notice}已添加{rolename}”)
您可以像使用成员转换器一样使用角色转换器。您可以在参数中传递role:discord.role
。那么,你只需要提到这个角色
此外,您必须为成员参数指定一个默认值None
,以检查它是否为None
@commands.具有权限(manage\u messages=True)
异步def addrole(self,ctx,role:discord.role,member:discord.member=None):
如果不是成员:
成员=ctx.author
等待成员。添加_角色(角色)
wait ctx.send(f“{member.notice}已添加{role.name}”)
工具书类
这将给您带来错误,因为位置参数跟在关键字参数后面。OP必须更改参数顺序,以使成员optionIt在:role:discord.role.上出错,因此新命令现在先有discord.role,然后是成员:discord.member=None,如您在solution.TY中看到的帮助。