diff --git a/changelog.d/admin/3010.enhance.rst b/changelog.d/admin/3010.enhance.rst new file mode 100644 index 000000000..5db617388 --- /dev/null +++ b/changelog.d/admin/3010.enhance.rst @@ -0,0 +1 @@ +Role granting/removing commands will now notify when the user already has/doesn't have a role when attempting to add/remove it. diff --git a/redbot/cogs/admin/admin.py b/redbot/cogs/admin/admin.py index e85e302b4..245cc242e 100644 --- a/redbot/cogs/admin/admin.py +++ b/redbot/cogs/admin/admin.py @@ -121,8 +121,13 @@ class Admin(commands.Cog): async def _addrole( self, ctx: commands.Context, member: discord.Member, role: discord.Role, *, check_user=True ): - if member is None: - member = ctx.author + if role in member.roles: + await ctx.send( + _("{member.display_name} already has the role {role.name}.").format( + role=role, member=member + ) + ) + return if check_user and not self.pass_user_hierarchy_check(ctx, role): await ctx.send(_(USER_HIERARCHY_ISSUE_ADD).format(role=role, member=member)) return @@ -146,8 +151,13 @@ class Admin(commands.Cog): async def _removerole( self, ctx: commands.Context, member: discord.Member, role: discord.Role, *, check_user=True ): - if member is None: - member = ctx.author + if role not in member.roles: + await ctx.send( + _("{member.display_name} does not have the role {role.name}.").format( + role=role, member=member + ) + ) + return if check_user and not self.pass_user_hierarchy_check(ctx, role): await ctx.send(_(USER_HIERARCHY_ISSUE_REMOVE).format(role=role, member=member)) return