«Missing Permissions» rarely means you forgot to tick a box. Far more often the box is ticked and something else is overriding it — a channel setting, or the bot's place in the role list.
Check in this order
- Does the bot's role have the permission at all?
Server Settings → Roles → your bot's role. This is the one people check first and it is rarely the answer.
- Is a channel overriding it?
A channel can deny what the role grants. Right-click the channel → Edit Channel → Permissions, and look for a red cross on your bot's role.
- Is the bot's role high enough?
This is the one that catches everyone. A bot cannot moderate, kick, ban or edit the roles of anyone whose highest role sits above its own. Administrator does not exempt it.
- Is the target the server owner?
Nothing can act on the owner. No permission, no role position, no amount of Administrator changes that.
The hierarchy rule in practice
| Situation | Works? |
|---|---|
| Bot role above the target's highest role | Yes |
| Bot role below the target's highest role | No, whatever permissions it has |
| Bot role at the same position | No — equal is not above |
| Target is the server owner | Never |
Granting Administrator to make an error go away hands the bot every power in the server, including ones its code was never audited for. If the bot is ever compromised, so is the server. Grant what it needs and move its role up instead.
Put bot roles above your member roles and below your own staff role when you first add them. Doing it up front avoids a whole class of confusing failures later.
The action succeeds in the channel it was failing in, with no permission error in the console.