首页 > 解决方案 > discord.py 检查用户是否具有特定角色

问题描述

我试图让这个来检查用户是否具有被标记的角色。

discord.utils.get(ctx.guild.roles, name=rolename) 和 discord.utils.get(user.roles, name=rolename)

@bot.command()
@commands.has_permissions(manage_roles=True)
async def giverole(ctx, user: discord.Member, rolename: discord.Role):
    role = discord.utils.get(ctx.guild.roles, name=rolename)
    if(not role in user.roles):
        await user.add_roles(rolename)
        embed=discord.Embed(title=f"{user.name} Has been added to a role called: {rolename.name}", color=discord.Color.dark_purple())
        await ctx.send(embed=embed)
    else:
        await ctx.send(f"Hey {ctx.author.name}, {user.name} already has the role called: {rolename.name}")

没有错误只是不断地赋予角色而不是检查用户是否具有角色。

标签: pythondiscorddiscord.py-rewrite

解决方案


@bot.command()
@commands.has_permissions(manage_roles=True)
async def giverole(ctx, user: discord.Member=None, rolename:discord.Role=None):
    if rolename in user.roles:
        await ctx.send("Person already has role")
    else:
        await user.add_roles(rolename)
        await ctx.send("Person doesn't have the role and it has been given to him/her")

确保机器人的角色高于您尝试赋予用户的角色,因为如果不是,那么您将收到错误50013 Missing Permissions.


推荐阅读