One of Discord’s most powerful features is its ability to set up granular permissions for users in your server. You can set up permissions on an individual, role, channel or category level. In this blog post, we will provide an overview of Discord permissions and provide step-by-step guidance on setting them up effortlessly. We will also go through the Discord hierarchy and discuss what happens when you’ve got conflicting channel and role permissions.
Discord's permissions system allows server administrators to control the actions that users can perform within a server, for example sending messages, files or opening threads.
Roles are the foundation of this permissions system, as they define a set of permissions that apply to any member possessing that role.
Server-wide vs. Channel-specific Permissions
Discord permissions can be distinguished into two levels: server-wide and channel-specific. Server-wide permissions apply to the entire server, allowing administrators to manage user access, moderation, and more. Channel-specific permissions, on the other hand, focus on limiting or expanding user capabilities within specific channels, offering granular control.
1. Designing Roles
The first step involves designing roles that align with the desired structure of your server.
You can set up roles in Server Settings -> Roles. The permissions set up in the Roles section of your Discord server apply server-wide, unless you make any custom changes on a channel basis, more on that below.
By default, users will be granted the “everyone” role, and permissions can be set in Server Settings -> Roles -> Default Permissions.
Most server admins would give @everyone limited permissions, or even none.
You can automatically assign roles to users using Discord authentications bots, such as Captcha.bot. This can be useful if you want to prevent bots from spamming your servers. You can then give users a role automatically once verified, with the role’s attached permissions.
Multiple Roles
Discord follows a top-to-bottom approach, where roles at the top override those below. If a user has multiple roles, they will get the permissions from both roles. They will get assigned the color of the role that is highest up your list, you can re-order your list via drag-and-drop.
In the example above, someone with the roles “Founders” and “Mava Beta”, their username would show up in red in the server, and they would have all permissions of both roles.
2. Channel-Specific Permissions
Moving to channel-specific permissions, navigate to the desired channel and click on the cogwheel icon to access channel settings.
From there, choose the "Permissions" tab, which allows you to configure channel-specific permissions. Here, you can adjust options such as the ability to send messages, embed links, attach files, or even initiate voice calls.
In Discord, channel permissions take precedence over role settings. For instance, if you have 10 channels and you want your role "Users" to have access to 9 out of those 10 channels, it is recommended to grant them the "View Channel" permission in the global, server-wide settings. Then, you can navigate to the single channel that they should not have access to and manually disable their access.
On the other hand, if you want non-verified users with no role to have access to only 1 out of the 10 channels, you can disable their global access and selectively grant them access to the specific channel you want them to see. An example could be granting access to your verification channel.
Category Permissions
Imagine you have a specific set of 5 channels dedicated exclusively to your VIP users. To streamline your server setup, you can create a new Category and only give access to your VIP users. Any channels you create beneath this Category will automatically inherit the same access restrictions, unless you manually modify them later on.
Once you create your category hit “Edit Category”, search for your role and give them view access to the channel. If you want everyone else not to have access, but you’ve given them view access to the server via the server’s global settings, remember to turn the view access off for everyone else.
Channel-specific permissions override role and category permissions.
Here's an example to demonstrate how Discord permissions work:
Suppose you have a role called "Users" with the permission "View Channel" enabled in the global settings.
However, you also have a channel called #VIP that is exclusively for VIP users. To restrict access to this channel for the "Users" role, you can navigate to the #VIP channel, click on "Edit Channel," and then select "Permissions."
Locate the "Users" role in the permissions settings and disable their view access. By doing so, members with the "Users" role will no longer be able to see the #VIP channel.
What’s more, if you’ve restricted permissions on a category level, but then change permissions on a channel level, the permissions on the channel level will override whatever permissions you’ve set on the category level.
When you add bots to your Discord server, they need to have certain permission in order to function.
In the case of the Mava Customer Support Bot, you can find those permissions here.
Some bots ask for Admin permission as soon as they enter the server, which means that they can access all channels and will always work. This creates a seamless user experience, but giving a bot Admin access has security implications.
At Mava, we therefore decided not to ask for Admin permissions but only ask for the minimum amount of permissions required for our bot to function, such as sending messages.
As explained in this blog post, however, since in Discord channel permissions take precedence over other permissions, you may find that the Mava Bot (or other bots without admin permissions) don’t function properly, because the setting of a channel prevents them from, for example, sending a message.
In order to resolve such issues, you can navigate to the channel you want the bot to have access to and go to Edit Channel -> Permissions, search for the bot and grant it the relevant permissions.
Alternatively, many admins like to create a new role for your bot and give it all the permissions it needs on a global level. This, however, can cause issues if, on a channel level, you’ve manually blocked access to “@everyone”. Since channel permissions override role permissions, the bot will not have access to the channel.
In the above example, unless the bot has a “VIP” or “Users” role (assuming those roles have view access), it would not have access to the channel, even if the bot’s global permissions are set as able to view channels.
We therefore recommend manually granting the bot access to all relevant channels.
To confirm your setup is as you intended, Discord has a feature that allows you to view your server as a specific Role. You can go into Server Settings -> Roles and click on the “More” button next to a specific role and select “View server as role” to check what channels that specific Role can view. You can also see if users in that Role are able to send message.
- Avoid granting unnecessary permissions. Granting only the permissions required for a specific role ensures greater security and minimizes the risk of accidental misuse.
- Utilize Discord's default permissions. Default permissions provide a solid framework and can be a great starting point. Customize them as per your needs to maintain control while saving time.
- Regularly review and revise permissions. As your server grows and evolves, it's essential to revisit the permissions structure periodically to ensure it aligns with your server's goals and the changing needs of your community.
- Utilize Discord's permission audit log. This feature allows you to track permission changes and monitor any modifications made. It serves as a useful tool in maintaining accountability.
In summary, a few key takeaways to remember:
Discord permissions serve as the backbone of effective server management, enabling administrators to maintain order while empowering users with the appropriate level of access. By understanding the function of roles and comprehending how to set up server-wide and channel-specific permissions, you can create a highly functional and secure server environment.
The key to success lies in striking the right balance between granting enough permissions for users to be able to engage and maintaining enough control to prevent chaos. By following the steps outlined in this guide and utilizing various optimization tips, you can ensure that your Discord server runs smoothly, fostering seamless communication and collaboration.