How permissions are resolved
Permissions are resolved by first calculating explicit permissions and then applying implicit permissions.
In short, these situations are considered: (Most to least priority)
Permission and channel type mismatches — e.g. Connect and a forum channel
Channel visibility — e.g. Create Invite and a channel hidden to the member
Message sendability — e.g. Attach Files and a channel where the member can't send messages
Server owner
Administrator permission
Time-outs
Member channel overwrites
Allowing role channel overwrites
Denying role channel overwrites
@everyone
channel overwritesGlobal permissions of the roles
Global permissions of
@everyone
How to calculate explicit permissions
Calculate permissions based on global permissions and channel permission overwrites.
Inherit permissions from
@everyone
Set all permissions given to the member's roles to Yes.
Apply overwrites for
@everyone
by setting allowed permissions to Yes, denied permissions to No, and not touching unset permissionsSet permissions that have a denying role overwrite that the member has to No
Set permissions that have an allowing role overwrite that the member has to Yes
Apply member overwrites by setting allowed permissions to Yes, denied permissions to No, and not touching unset permissions
The resulting set of permissions are partially resolved and must implicit permissions must be applied for them to be fully resolved.
How to apply implicit permissions
Update explicit permissions based on channel type and whether the status of the member.
If the member is timed out, set all permissions except Read Messages and Read Message History to No
If the member has the Administrator permission allowed by any of their roles, set all permissions to Yes
If the member is the server owner, set all permissions to Yes
If the channel is a thread, and if Send Messages in Threads is set to No; otherwise, if Send Messages is set to No; set the following to No:
Embed Links
Attach Files
Mention @everyone, @here and All Roles
Send Text-to-speech Messages
If Read Messages is set to No, set the following to No:
Add Reactions
Attach Files
Connect
Create Invite
Create Private Threads
Create Public Threads
Deafen Members
Embed Links
Use External Emojis
Use External Stickers
Manage Channels
Manage Messages
Manage Roles
Manage Threads
Manage Webhooks
Mention @everyone, @here and All Roles
Move Members
Mute Members
Priority Speaker
Read Message History
Read Messages
Request to Speak
Send Messages
Send Messages in Threads
Send Text-to-speech Messages
Speak
Video
Use Application Comands
Use Soundboard
Use Voice Activity
If the channel is a text channel or a forum channel, set the following to No:
Connect
Deafen Members
Move Members
Mute Members
Priority Speaker
Speak
Video
Use Activities
Use External Sounds
Use Soundboard
Use Voice Activity
If the channel is a voice channel and Connect is set to No, set the following to No:
Connect
Deafen Members
Manage Channels
Manage Roles
Move Members
Mute Members
Priority Speaker
Speak
Video
Use Activities
Use External Sounds
Use Soundboard
Use Voice Activity
The resulting set of permissions is the resolved permissions.