Why Your Discord Bot Can't Ban, Kick, or Timeout Members (and How to Fix It)
Your Discord bot can't ban, kick, or timeout members because its role sits below the people it's trying to act on. Permissions tell Discord what the bot is allowed to do; role position decides who it's allowed to do it to. Even with the Ban Members permission checked, a bot can never moderate anyone whose highest role is equal to or above the bot's highest role. Drag the bot's role above your member roles and the action starts working immediately.
This is one of the most confusing parts of Discord. You gave the bot the permission. The toggle is green. You run the ban command and it either silently does nothing or throws "Missing Permissions" — even though the permission clearly isn't missing. The problem is real, it's common, and once you understand the two-layer system behind it, the fix takes a minute or two.
The silent fail: permission granted, action still blocked
Discord moderation runs on two separate checks, and both have to pass before a ban, kick, or timeout goes through.
- Does the bot have the permission? This is the Ban Members / Kick Members / Moderate Members toggle on its role.
- Is the bot's role high enough to act on the target? This is role hierarchy, and it's checked per-target, every single time.
People configure check #1, see it's green, and assume they're done. But Discord still runs check #2 in the background. If the person you're trying to moderate has a role sitting at or above the bot's highest role, the action is blocked — no matter how many permissions the bot has. That's why "I gave it Ban Members and it still won't ban" is such a common complaint about moderation bots.
The error you see depends on whether you're using slash commands or a custom command. Sometimes it's a clear "Missing Permissions." Sometimes it's a generic "Something went wrong." Sometimes nothing visible happens at all. All three usually point at the same root cause.
Let's walk through the three things that actually cause this, in the order you should check them.
Cause 1: the bot's role sits below the target member
This is the cause behind most "bot can't ban" reports.
Every member in a Discord server has a highest role — the topmost role they hold in the role list. Discord compares the bot's highest role against the target's highest role. The rule is strict:
A bot can only ban, kick, or timeout a member whose highest role is below the bot's highest role.
Equal height doesn't count. If the bot's top role and the target's top role sit at the same position, the action fails. The bot has to be above them.
Here's the part that trips everyone up: giving the bot a role with Administrator does not override this. Hierarchy is checked independently of permissions. An Administrator bot still can't touch someone whose role is higher than the bot's role in the list. This is by design — it stops a compromised or misconfigured bot from nuking your staff.
A typical broken setup looks like this, top to bottom in Server Settings → Roles:
- Owner
- Admin
- Moderator
- Your Bot ← too low
- Member
- @everyone
In that layout the bot can ban regular Members, but it can't touch anyone with the Moderator, Admin, or Owner role — because all three sit above it. If you tested your ban command on a fellow staff member, that's exactly why it failed. This is the same mechanic that stops human moderators from banning each other; we break it down in detail in why a moderator can't ban and how role order fixes it.
The fix is simply to drag the bot's role up. We'll do that step by step below.
Cause 2: missing Ban / Kick / Moderate Members permission
Before you blame hierarchy, confirm the bot genuinely has the right permission — because the three moderation actions use three different permissions, and it's easy to grant one and forget the others.
- Ban Members — required to ban.
- Kick Members — required to kick.
- Moderate Members — required to timeout. This is the one people miss most, because "timeout" doesn't have a permission literally called "Timeout Members." It's called Moderate Members, and without it the timeout command fails even when Ban and Kick work fine.
There are two layers to check here too:
Server-level permissions. Open Server Settings → Roles, click the bot's role, and confirm Ban Members, Kick Members, and Moderate Members are all enabled.
Channel-level overrides. A specific channel can override server permissions. If a moderator-only or admin channel has an explicit deny on one of these permissions for the bot's role, the bot loses that ability inside that channel — even if the server-wide setting is on. Right-click the channel → Edit Channel → Permissions, find the bot's role, and make sure nothing is set to the red "X" (deny) for the moderation permissions.
If you're not sure which permissions a moderation bot actually needs to function fully, our guide on what permissions to give a Discord bot lays out a safe, minimal set.
Cause 3: trying to act on the server owner
This one isn't a misconfiguration — it's a hard rule, and no fix exists.
No bot can ban, kick, or timeout the server owner. Ever. The owner sits above everything in the hierarchy by definition, regardless of role positions or permissions. If your "ban not working" test was run against the owner account, the bot is behaving exactly as Discord intends. Test on a non-owner account instead.
The same applies, partially, to anyone whose role equals the bot's top role — but that's a positioning problem you can fix (see Cause 1). The owner is the one case where there's nothing to change.
How to fix the bot's role position step by step
Most "can't ban" problems disappear once the bot's role is above your member and staff roles. Here's the exact process.
Step 1: Open your server's role list
Go to Server Settings → Roles. You'll see every role stacked in order. Higher in this list = more authority. The bot's auto-created role (usually named after the bot) is somewhere in here.
Step 2: Find the bot's role and the highest role it needs to moderate
Identify the topmost role held by the members you want the bot to be able to moderate. If you want the bot to handle rule-breakers who only have the Member role, that's your target height. If you want it to discipline junior staff too, you'll need the bot above those staff roles.
Step 3: Drag the bot's role above every role it must act on
Click and drag the bot's role upward so it sits above the highest role it needs to moderate. A safe, common placement is directly under your top admin/owner roles and above everything else:
- Owner
- Admin
- Your Bot ← moved up
- Moderator
- Member
- @everyone
Now the bot outranks Moderator, Member, and @everyone, so it can moderate all of them. It still can't touch Admin or Owner, which is usually what you want.
Step 4: Confirm the three permissions are still enabled
Click the bot's role and double-check Ban Members, Kick Members, and Moderate Members are all on. Moving a role doesn't change its permissions, but it's worth a glance while you're here.
Step 5: Check for channel-level denies
If you moderate inside specific channels, open each one's permission settings (Edit Channel → Permissions) and make sure the bot's role has no explicit deny on the moderation permissions. Server-level "allow" does not override a channel-level "deny."
That's the whole fix. In practice, Step 3 alone solves most cases.
How to test that ban, kick, and timeout now work
Don't assume it's fixed — verify it cleanly so you're not surprised mid-raid.
- Use a test account, not the owner. Create or borrow a second account with only the Member role. The owner can never be moderated, so testing on yourself-as-owner proves nothing.
- Test timeout first. Timeout is reversible and harmless. Run the bot's timeout command on the test account for one minute. If it applies, your Moderate Members permission and hierarchy are both correct.
- Test kick. Kick the test account. They can rejoin with an invite, so it's low-risk. Success here confirms Kick Members plus hierarchy.
- Test ban, then unban. Ban the test account, confirm it worked, then unban it from Server Settings → Bans. This confirms Ban Members end to end.
- Test on a higher role on purpose. Briefly give the test account a role that sits above the bot and try to moderate it. It should fail. That failure confirms hierarchy is doing its job — and reminds you why staff roles above the bot are protected.
If timeout works but ban doesn't, you're missing Ban Members specifically. If nothing works on anyone, it's almost certainly role position (Cause 1) or a channel-level deny (Cause 2).
While you're auditing the bot's role, it's worth checking the other actions that hierarchy silently blocks. The same too-low-role problem is exactly why a Discord bot won't assign roles — a bot can only hand out roles below its own. It also explains a chunk of the cases in why a bot can't pin messages or create emoji. Fixing position once tends to clear several mysteries at the same time.
Bots that set up their own role position correctly
A lot of these tickets exist only because a bot was installed and its role was left wherever Discord dropped it — usually near the bottom. The cleanest way to avoid the whole problem is to use a bot that places itself sensibly and is honest about what it can and can't reach.
PeakBot is a free, AI-powered Discord bot built so its moderation actually works out of the box. Its context-aware AI moderation reads message intent and adapts per channel instead of matching a fixed keyword blocklist — but more importantly for this article, it's designed around the hierarchy reality: it acts on members below its role, leaves the owner and higher staff untouched, and surfaces a clear reason when an action is blocked rather than failing silently. When you spin up a server with its AI Server Builder, roles and the bot's position are generated as a coherent structure rather than a pile you have to re-sort by hand.
PeakBot keeps 30+ features free with no time limit and no trial period — AI moderation, XP and leveling, tickets, welcome messages, anti-raid/anti-nuke, logging, and more — and it replaces MEE6, Carl-bot, Dyno, and TidyCord with one install. It's currently powering 500+ Discord communities. Pro is $8.25/month (or $69/year) per server if you want the AI Server Builder and the rest.
To be fair to the alternatives: Dyno (premium $4.99/mo) has long been a dependable, no-frills moderation workhorse; Carl-bot (premium $7.99/mo) is excellent at reaction roles and embeds; MEE6 (premium $11.95/mo) has the most familiar leveling system. Any of them will moderate fine once the role is positioned correctly — that part is on you regardless of which bot you pick, because hierarchy is a Discord rule, not a bot feature. The difference is how clearly the bot tells you when position is the problem.
You can see the full free feature set on the features page or compare costs directly on pricing.
FAQ
Why can't my Discord bot ban members even though I gave it the Ban Members permission?
Because permission and hierarchy are two separate checks. The Ban Members permission lets the bot ban in principle, but it can only ban members whose highest role sits below the bot's highest role. Drag the bot's role above your member and staff roles in Server Settings → Roles and it will work.
What permission lets a Discord bot timeout members?
The Moderate Members permission. There's no permission literally named "Timeout," which is why people grant Ban and Kick but leave timeout broken. Enable Moderate Members on the bot's role and confirm the bot's role sits above the people you want to timeout.
Can any Discord bot ban the server owner?
No. The server owner cannot be banned, kicked, or timed out by any bot or any member, regardless of permissions or role position. This is a hard Discord rule with no workaround. If your ban test failed against the owner, that's expected — test on a non-owner account instead.
My bot can ban regular members but not moderators. Why?
Your moderator role sits at or above the bot's role. A bot can only act on members whose highest role is strictly below its own. Move the bot's role above the moderator role if you want it to discipline moderators — or leave it where it is if staff should be protected.
Does giving the bot Administrator fix the ban problem?
No. Administrator grants every permission, but it does not bypass role hierarchy. An Administrator bot still can't moderate anyone whose role is equal to or above the bot's role. Position the bot's role correctly; Administrator alone won't help.
