feat(voice): add memberCanJoinVoiceListenOnly helper (Phase 72)
Lurkers without custom-role permissions may join voice in receive-only mode. Full members may also opt into listen-only. Exported alongside memberCanParticipate for platform and smoke tests. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
@@ -94,6 +94,13 @@ function memberCanParticipate (member, customRoles = []) {
|
|||||||
return mask > 0
|
return mask > 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Lurkers without participate may join voice receive-only; full members may opt in via listenOnly. */
|
||||||
|
function memberCanJoinVoiceListenOnly (member, customRoles = []) {
|
||||||
|
if (!member) return false
|
||||||
|
if (memberCanParticipate(member, customRoles)) return true
|
||||||
|
return String(member.roles) === MEMBER_ROLES.LURKER
|
||||||
|
}
|
||||||
|
|
||||||
function roleHasPermission (roles, perm) {
|
function roleHasPermission (roles, perm) {
|
||||||
const key = String(roles || MEMBER_ROLES.MEMBER)
|
const key = String(roles || MEMBER_ROLES.MEMBER)
|
||||||
return ((ROLE_PERMISSIONS[key] || 0) & perm) === perm
|
return ((ROLE_PERMISSIONS[key] || 0) & perm) === perm
|
||||||
@@ -327,6 +334,7 @@ module.exports = {
|
|||||||
ROLE_PERMISSIONS,
|
ROLE_PERMISSIONS,
|
||||||
roleHasPermission,
|
roleHasPermission,
|
||||||
memberCanParticipate,
|
memberCanParticipate,
|
||||||
|
memberCanJoinVoiceListenOnly,
|
||||||
memberHasPermission,
|
memberHasPermission,
|
||||||
canModifyMessage,
|
canModifyMessage,
|
||||||
RPC,
|
RPC,
|
||||||
|
|||||||
Reference in New Issue
Block a user