Bot API docs

Permissions

Permissions are Discord's bitfields, as decimal strings, everywhere: roles, overwrites, the invite link's permissions. Voicaw's permissions are fewer than Discord's, so each of Voicaw's has a Discord bit, and some of Discord's come with another one.

How a bot's permissions work

As anyone's in a guild: @everyone's permissions plus those of the bot's roles (its own role and any it's given). Administrator, or owning the guild, means everything. In a channel, the overwrites apply in Discord's order: @everyone's, then the roles' (denies, then allows), then the member's own. In a thread, Send Messages in Threads stands in for Send Messages.

On top of permissions, a bot only reaches below its own highest role: it can't edit, give or delete roles at or above it, or kick, ban or change the roles of members ranked as high, and it can't give out permissions it doesn't have itself. Move its role up in the guild's settings to let it manage more.

The bits

BitDiscord's nameOn Voicaw
1 << 0CREATE_INSTANT_INVITECreate Invite
1 << 1KICK_MEMBERSKick Members
1 << 2BAN_MEMBERSBan Members
1 << 3ADMINISTRATORAdministrator
1 << 4MANAGE_CHANNELSManage Channels
1 << 5MANAGE_GUILDManage Guild
1 << 6ADD_REACTIONSAdd Reactions
1 << 7VIEW_AUDIT_LOGView Audit Log
1 << 9STREAMVideo (share your screen in voice channels)
1 << 10VIEW_CHANNELView Channel
1 << 11SEND_MESSAGESSend Messages
1 << 13MANAGE_MESSAGESManage Messages
1 << 17MENTION_EVERYONEMention @everyone, @here and all roles
1 << 20CONNECTConnect
1 << 21SPEAKSpeak
1 << 28MANAGE_ROLESManage Roles
1 << 29MANAGE_WEBHOOKSManage Webhooks
1 << 30MANAGE_GUILD_EXPRESSIONSManage Emoji
1 << 35CREATE_PUBLIC_THREADSCreate Threads
1 << 33MANAGE_EVENTSManage Events: edit, start, end and cancel anyone's scheduled events
1 << 38SEND_MESSAGES_IN_THREADSSend Messages in Threads
1 << 44CREATE_EVENTSCreate Events (and edit, start and cancel your own); @everyone has it by default
1 << 51PIN_MESSAGESPin Messages
1 << 56(Voicaw's own)Edit Tasks, in list channels
1 << 57(Voicaw's own)Create Documents, in document channels
1 << 58(Voicaw's own)Queue Videos, in Watch Together
1 << 59(Voicaw's own)Manage Queue, in Watch Together
1 << 60(Voicaw's own)Control Playback, in Watch Together
1 << 61(Voicaw's own)Listen: hear the others in voice channels. A bot only has it when given it (never through @everyone); see Voice

Bits that come with another

Voicaw has no separate permission for these, so Voicaw sends them set whenever the permission they come with is. Libraries checking for them (discord.js's permissionsIn(channel).has('EmbedLinks')) get the right answer.

BitComes with
READ_MESSAGE_HISTORY (1 << 16)View Channel
EMBED_LINKS (1 << 14), ATTACH_FILES (1 << 15), USE_EXTERNAL_EMOJIS (1 << 18), USE_APPLICATION_COMMANDS (1 << 31)Send Messages
USE_VAD (1 << 25)Speak
CREATE_GUILD_EXPRESSIONS (1 << 43)Manage Emoji

When you send permissions (a role, an overwrite, an invite link), only the bits in the first table count. The ones that come with another, and Discord's bits Voicaw has no meaning for (Priority Speaker, Manage Nicknames, Moderate Members…), are ignored.

Some permissions can't be set per channel (overwritten): Kick, Ban, Administrator, Manage Channels, Manage Guild, Manage Roles, Manage Webhooks, View Audit Log, Manage Emoji, Create Invite and Mention Everyone. Those bits are dropped from an overwrite.