Discord.py bot getting 403 forbidden error when trying to remove users despite having administrator permissions

I’m working on a Discord bot using the discord.py library and running into a frustrating issue. When I attempt to remove certain members from the server, I keep getting this error message:

FORBIDDEN (status code: 403): Privilege is too low..

The weird part is that my bot can successfully remove users who don’t have any roles, but it fails when trying to remove members with assigned roles. I’ve already given my bot administrator permissions in the server settings, so I expected it to work without any problems.

I’m confused about what additional permissions or configuration I might be missing. Can someone explain how the permission hierarchy works for bots and what steps I need to take to allow my bot to remove all members regardless of their roles?

Yeah, role hierarchy is the problem. Everyone nailed that.

But here’s the thing - I’ve managed bots across tons of servers and this stuff breaks ALL the time. Someone tweaks roles, adds mods, creates weird permissions and boom - your bot’s dead.

I got sick of babysitting Discord permissions so I built something that fixes this automatically. Latenode hooks into Discord’s API and watches for permission changes, role updates, failed moderation attempts - all of it.

Someone gets a new role that screws your bot’s hierarchy? It adjusts the bot’s position automatically or pings admins. You can set up different kick behaviors for different users or backup moderation when permissions break.

Best part is connecting it to your other stuff - database logs, user management, automated appeals.

Saves me hours every week vs manually fixing permission issues.

Check it out: https://latenode.com

Discord checks role hierarchy, not just admin permissions. Your bot can only kick users whose highest role sits below the bot’s role in the server list. You need to drag your bot’s role above the roles of users you want to kick in server settings > Roles. Had this exact issue when I started making bots - spent hours debugging what turned out to be simple role positioning, not a permissions bug.

discord’s api works weird here - even the server owner can’t kick someone with a higher role. it’s not a bug, that’s just how discord handles permissions. just move your bot’s role higher in the server hierarchy and it’ll work fine.

yeah, this got me too when i started. discord follows role hierarchy even with admin perms. just drag your bot’s role higher in the role list - it needs to be above any role the user has, not just having admin checked.

Yeah, it’s a role hierarchy problem. But manually fixing Discord bot permissions gets tedious, especially with multiple servers or complex moderation setups.

I hit this exact issue across dozens of servers while building mod systems. Moving roles around works, but what about dynamic role management? Or integrating with other tools?

I automated the whole thing with Latenode. It watches role changes, repositions bots automatically, and handles cross-server moderation. The visual workflow builder makes setting up conditional logic for different user types really straightforward.

You can also connect it to logs, databases, or Slack notifications for moderation actions. Much more powerful than just fixing hierarchy once.

Check it out: https://latenode.com

Had the exact same issue with my first moderation bot. Discord’s role hierarchy is super strict - your bot can’t kick anyone whose highest role sits above the bot’s role, even with admin permissions. What threw me off was that Discord only checks their highest role, not all of them. Put your bot’s role near the top, right under your admin roles. Also double-check that ‘Kick Members’ permission is actually enabled - some servers have weird permission overrides that mess with admin privileges.

This happens because Discord’s role hierarchy beats admin permissions for moderation stuff. Even with admin privileges, your bot can’t touch users whose highest role sits above the bot’s role in the hierarchy. Fix this by moving your bot’s role higher up. Go to Server Settings > Roles and drag your bot’s role above any roles you want it to moderate. The position matters more than having the admin box checked - that’s what controls what your bot can actually do to members.

The Problem: Your Discord bot is failing to remove members from a server, specifically those with assigned roles, resulting in a FORBIDDEN (status code: 403): Privilege is too low error. The bot successfully removes members without roles, and you’ve already granted the bot administrator permissions in the server settings.

:thinking: Understanding the “Why” (The Root Cause):

While you’ve granted your bot administrator permissions, Discord’s permission system is hierarchical. Simply having “administrator” permission doesn’t automatically grant the bot the ability to override all other roles. The bot’s role within the server’s hierarchy determines its authority. If a user has a role positioned higher than your bot’s role in the server’s role hierarchy, your bot lacks the authority to remove them, even with administrator permissions enabled. This is why it works on members without roles (who have the lowest hierarchical position).

:gear: Step-by-Step Guide:

Step 1: Adjust Bot Role Hierarchy:

The primary solution is to adjust your bot’s role position within the server’s role hierarchy. This ensures the bot has the authority to remove users regardless of their roles.

  1. Go to your Discord server’s settings.
  2. Navigate to the “Roles” section.
  3. Locate your bot’s role in the list.
  4. Drag and drop your bot’s role to a position higher in the hierarchy than any other user role. Ideally, position it just below the topmost administrative roles. The exact position will depend on your server’s structure, but it must be above any role held by a user you want the bot to be able to remove.
  5. Save the changes.

Step 2: Verify “Kick Members” Permission (Important Check):

Although you’ve granted administrator permissions, ensure that the specific “Kick Members” permission is enabled for your bot’s role. Sometimes, despite having administrator permissions set, granular permissions might be overridden.

  1. Go to your Discord server’s settings.
  2. Navigate to the “Roles” section.
  3. Click on your bot’s role.
  4. In the permissions settings, explicitly enable the “Kick Members” permission.
  5. Save the changes.

Step 3: Restart Your Bot:

After adjusting the role hierarchy and verifying permissions, restart your bot to apply the changes.

:mag: Common Pitfalls & What to Check Next:

  • Role Hierarchy Misunderstanding: The most common mistake is not understanding that Discord uses a strict role hierarchy. Administrative permissions are not absolute; they are subject to role positioning.
  • Incorrect Permission Assignment: Double-check that the “Kick Members” permission is explicitly enabled for your bot’s role, even if administrator permissions are already set.
  • Caching Issues: While unlikely in this specific case, ensure your bot isn’t using a local cache that’s storing outdated permission data. Restarting the bot should resolve any caching issues.
  • API Rate Limits: If you’re attempting to kick many members at once, you might hit Discord’s API rate limits. Implement rate limiting to prevent temporary service disruptions.

:speech_balloon: Still running into issues? Share your (sanitized) config files, the exact command you ran, and any other relevant details. The community is here to help!

The 403 error occurs due to Discord’s role hierarchy overriding admin permissions. I’ve encountered this frequently while developing moderation bots. It’s essential that your bot’s role is positioned above the users you want to remove; merely having admin permissions isn’t sufficient. To resolve this, navigate to Server Settings > Roles and adjust the bot’s role to a higher position than any roles assigned to the users you intend to moderate. The order of roles is crucial for your bot’s ability to perform moderation actions.

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.