feat(guild-roles): permission UI for connect and speak in voice

Extend PERMISSION_META, maskToPermissionView, and ALL_PERMISSIONS_MASK for
CONNECT_VOICE (64) and SPEAK_IN_VOICE (128).
This commit is contained in:
Raven Scott
2026-05-22 03:07:32 -04:00
parent e770610882
commit 37fbe58356
+19 -1
View File
@@ -8,7 +8,9 @@ const ALL_PERMISSIONS_MASK =
PERMISSION.DELETE_ANY_MESSAGE |
PERMISSION.MODERATE_MEMBERS |
PERMISSION.MANAGE_MESSAGES |
PERMISSION.SEND_MESSAGES
PERMISSION.SEND_MESSAGES |
PERMISSION.CONNECT_VOICE |
PERMISSION.SPEAK_IN_VOICE
/** UI + editor metadata (Discord-style permission toggles). */
const PERMISSION_META = [
@@ -18,6 +20,18 @@ const PERMISSION_META = [
label: 'Send messages',
description: 'Send messages and add reactions in text channels'
},
{
flag: PERMISSION.CONNECT_VOICE,
key: 'connectVoice',
label: 'Connect voice',
description: 'Join voice and stage channels'
},
{
flag: PERMISSION.SPEAK_IN_VOICE,
key: 'speakInVoice',
label: 'Speak in voice',
description: 'Transmit audio in voice (without this, listen-only)'
},
{
flag: PERMISSION.MANAGE_GUILD,
key: 'manageGuild',
@@ -74,6 +88,8 @@ function maskHasPermission (mask, perm) {
function maskToPermissionView (mask) {
return {
sendMessages: maskHasPermission(mask, PERMISSION.SEND_MESSAGES),
connectVoice: maskHasPermission(mask, PERMISSION.CONNECT_VOICE),
speakInVoice: maskHasPermission(mask, PERMISSION.SPEAK_IN_VOICE),
deleteAny: maskHasPermission(mask, PERMISSION.DELETE_ANY_MESSAGE),
manageChannels: maskHasPermission(mask, PERMISSION.MANAGE_CHANNELS),
manageGuild: maskHasPermission(mask, PERMISSION.MANAGE_GUILD),
@@ -85,6 +101,8 @@ function maskToPermissionView (mask) {
function viewToMask (view = {}) {
let mask = 0
if (view.sendMessages) mask |= PERMISSION.SEND_MESSAGES
if (view.connectVoice) mask |= PERMISSION.CONNECT_VOICE
if (view.speakInVoice) mask |= PERMISSION.SPEAK_IN_VOICE
if (view.manageGuild) mask |= PERMISSION.MANAGE_GUILD
if (view.manageChannels) mask |= PERMISSION.MANAGE_CHANNELS
if (view.manageMessages) mask |= PERMISSION.MANAGE_MESSAGES