Skip to content

Client Permissions

Written by

The all permission is a special permission that is used to grant all permissions, this does not exist within discord.js

  • AddReactions
  • Administrator
  • ChangeNickname
  • CreateInvite
  • UseEmbeddedActivities
  • KickMembers
  • BanMembers
  • ManageChannels
  • ManageGuildExpressions (formally known as ManageEmojisAndStickers)
  • ManageGuild
  • ManageEvents
  • ManageMessages
  • ManageNicknames
  • ManageRoles
  • ManageWebhooks
  • ManageThreads
  • MentionEveryone
  • ModerateMembers
  • ViewAuditLog
  • ViewGuildInsights
  • ViewCreatorMonetizationAnalytics *

  • CreatePublicThreads
  • CreatePrivateThreads
  • ReadMessageHistory
  • ViewChannel
  • AttachFiles
  • EmbedLinks
  • SendMessages
  • SendTtsMessages
  • SendVoiceMessages
  • SendMessagesInThreads
  • UseExternalEmojis
  • UseExternalSticker
  • UseApplicationCommands

  • Connect
  • Speak
  • PrioritySpeaker
  • Stream
  • UseVAD
  • Mute
  • Deafen
  • MoveMembers
  • UseSoundboard
  • UseExternalSounds
  • RequestToSpeak

Applying permissions may seem intuitive at first, but there are some hidden restrictions that prevent a bot from performing certain inappropriate actions based on the bot’s top role versus its target’s top role. The highest role of a robot or user is the role with the largest position value in the guild. The default role @everyone starts from 0. Permissions follow a hierarchy with the following rules:

  • Bots can assign roles to other users with positions lower than their top role.
  • Bots can edit roles with a lower position than their highest role, but can only grant permissions to roles they own. – Bots can only rank characters lower than their highest character. – Bots can only kick, ban, and edit usernames whose highest role is lower than the bot’s highest role.

Otherwise, permissions are not bound by the role hierarchy. For example, a user has two roles: A and B. A Denying ViewChannel permission for the #coolchannel channel. B Grant ViewChannel permission to the same #coolchannel channel. Regardless of role title, users are likely to end up seeing the #coolchannel channel.

Overrides can be used to apply specific permissions to roles or members at the channel level.

Using overrides may result in user permission conflicts. That is, users may have overrides for certain permissions that conflict with each other or with their guild-level role permissions. With this in mind, permissions will be applied to users in the following hierarchy:

  1. The basic permissions granted to “@everyone” are applicable to the guild level.
  2. Permissions granted to users through roles apply at the guild level.
  3. Apply an override that denies “@everyone” permissions at the channel level.
  4. Apply an override that enables the “@everyone” permission at the channel level.
  5. Apply overrides denying specific role permissions at the channel level.
  6. Apply overrides that enable specific role permissions at the channel level.
  7. Apply member-specific overrides that deny permissions at the channel level.
  8. Apply member-specific overrides that enable permissions at the channel level.