Why can't my bot assign a role, kick or rename someone, even with Administrator?
Discord checks role position as well as permissions. A bot can only hand out, edit or delete roles below its own highest role, and can only kick, ban, time out or rename members whose highest role is below its own; Administrator lifts neither rule. Drag the bot's role above the roles and members it has to manage in Server Settings → Roles, unless the target is the server owner or an integration's role, which no position reaches.
Updated · the Bond team
Fix it in the Discord app
- Open Server Settings → Roles. The list runs from the highest role at the top to the lowest at the bottom.
- Find the bot's role, which usually carries the bot's name, and the role it has to hand out. If the bot has to act on a member, find that member's highest role instead.
- Drag the bot's role above that role. It only needs to be above its targets, not at the very top: keep it below your admin and moderator roles so the bot can never act on your staff.
- Check that the bot's role has the permission too: Manage Roles to hand out roles, Manage Nicknames to rename members, Timeout Members or Ban Members to moderate.
- Try again.
If the role in the way is the bot's own highest role, no drag fixes it, because a role cannot be moved above itself. For the bot to hand that role out, give the bot a different role and drag that one above it. To change or delete the bot's own top role, do it yourself in Server Settings → Roles.
The rule
Discord's permissions documentation states it for bots: "A bot can grant roles to other users that are of a lower position than its own highest role. A bot can edit roles of a lower position than its highest role, but it can only grant permissions it has to those roles." And: "A bot can only kick, ban, and edit nicknames for users whose highest role is lower than the bot's highest role." Discord's Roles and Permissions guide holds people to the same rule: members "cannot ban, kick, or change nicknames of users with equal or higher roles, even if they have those permissions."
A few things follow from that.
Equal is not enough. The bot's role has to be above the target, not level with it. So a bot cannot hand out or change its own highest role, or act on a member whose highest role is the same as the bot's.
Administrator does not help. It lets a bot past channel overwrites. It does nothing for role position. To see which bots ask for it, read which Discord bots ask for Administrator.
The owner is out of reach. Nobody can kick, ban or time out the server owner, and only the owner can change their own nickname.
Integration roles cannot be handed out. A bot's own role, the Server Booster role and roles made by linked integrations belong to Discord or the integration, and nobody can give them to members by hand or through a bot.
Timeouts have one more rule. Discord's member documentation says a timeout fails if the member has Administrator or owns the server, whatever the bot's position.
Voice mute and deafen are different. Mute Members and Deafen Members are voice permissions, decided in the voice channel the member is in rather than by role position.
If this, then that
- If it worked last week and stopped, someone moved the bot's role down or the target role up. Check the order in Server Settings → Roles.
- If it fails for one member and works for the rest, that member's highest role is at or above the bot's.
- If it fails for the server owner, nothing on the bot's side can change that.
- If the server owner cannot give the role to anyone by hand either, it is an integration's role and no bot can hand it out. Anyone else can also be stopped by their own role position, so only the owner's attempt tells you this.
- If the bot can hand out a role but cannot change its permissions, the change would give the role a permission the bot does not have itself.
- If you need to time out an administrator, take Administrator off their roles first, or use a kick or a ban.
- If the bot was changing a channel's permissions, role order has nothing to do with it. See Missing Permissions (50013).