首页 > 解决方案 > 我如何在 discord.py 中获得角色的名称

问题描述

我创建了一个添加角色命令。它工作正常,但我的问题是它只适用于角色的 id。我想知道如何以某种方式将角色的 id 转换为角色的名称。 这是代码。

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

任何帮助表示赞赏。编辑

解决方案

我利用了 2 条评论并创建了这个完美运行的命令。

    @commands.command()
    @commands.has_permissions(manage_messages=True)
    async def addrole(self, ctx, role: discord.Role, member: discord.Member=None):
        if member is None:
            member=ctx.author
        await member.add_roles(role)
        await ctx.send(f"{member.mention} was added {role}")```

标签: pythondiscorddiscord.py

解决方案


您可以将rolename变量声明为 adiscord.Role并使用将应用的隐式角色转换器,就像您的member对象发生的情况一样。你的函数看起来像这样:

@commands.has_permissions(manage_messages=True)
async def addrole(self, ctx, member: discord.Member, role: discord.Role):
    await member.add_roles(role)
    await ctx.send(f"{member.mention} was added {rolename}")

推荐阅读