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
|
||||
}
|
||||
|
||||
/** 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) {
|
||||
const key = String(roles || MEMBER_ROLES.MEMBER)
|
||||
return ((ROLE_PERMISSIONS[key] || 0) & perm) === perm
|
||||
@@ -327,6 +334,7 @@ module.exports = {
|
||||
ROLE_PERMISSIONS,
|
||||
roleHasPermission,
|
||||
memberCanParticipate,
|
||||
memberCanJoinVoiceListenOnly,
|
||||
memberHasPermission,
|
||||
canModifyMessage,
|
||||
RPC,
|
||||
|
||||
Reference in New Issue
Block a user