Permissions & Bitfields
Lunibee provides simple permission checks for everyday bot code while still exposing immutable permission sets when you need more control.
Check a permission
Section titled āCheck a permissionāif (member.permissions.administrator) { console.log("Member is an administrator.");}
if (member.permissions.manageMessages) { console.log("Member can manage messages.");}if (member.permissions.administrator) { console.log("Member is an administrator.");}
if (member.permissions.manageMessages) { console.log("Member can manage messages.");}Check multiple permissions
Section titled āCheck multiple permissionsāUse .has() when all permissions are required:
import { Permission } from "lunibee";
if (member.permissions.has( Permission.kickMembers, Permission.banMembers,)) { console.log("Member can kick and ban.");}import { Permission } from "lunibee";
if (member.permissions.has( Permission.kickMembers, Permission.banMembers,)) { console.log("Member can kick and ban.");}Use .any() when at least one permission is enough:
if (member.permissions.any( Permission.kickMembers, Permission.banMembers,)) { console.log("Member can perform at least one moderation action.");}if (member.permissions.any( Permission.kickMembers, Permission.banMembers,)) { console.log("Member can perform at least one moderation action.");}Build a permission set
Section titled āBuild a permission setāPermissionSet is immutable. Methods return a new set instead of changing the original.
import { PermissionSet, Permission } from "lunibee";
const base = new PermissionSet([ Permission.viewChannel, Permission.sendMessages,]);
const elevated = base.add( Permission.embedLinks, Permission.attachFiles,);
const restricted = elevated.remove(Permission.sendMessages);import { PermissionSet, Permission } from "lunibee";
const base = new PermissionSet([ Permission.viewChannel, Permission.sendMessages,]);
const elevated = base.add( Permission.embedLinks, Permission.attachFiles,);
const restricted = elevated.remove(Permission.sendMessages);Inspect permissions
Section titled āInspect permissionsāconsole.log(elevated.viewChannel); // trueconsole.log(elevated.sendMessages); // trueconsole.log(restricted.sendMessages); // falseconsole.log(elevated.toArray());console.log(elevated.viewChannel); // trueconsole.log(elevated.sendMessages); // trueconsole.log(restricted.sendMessages); // falseconsole.log(elevated.toArray());Permission constants
Section titled āPermission constantsāUse Lunibeeās Permission constants instead of manually calculating Discord permission bits:
Permission.viewChannelPermission.sendMessagesPermission.manageChannelsPermission.manageMessagesPermission.manageRolesPermission.administratorPermission.viewChannelPermission.sendMessagesPermission.manageChannelsPermission.manageMessagesPermission.manageRolesPermission.administratorThis keeps permission logic readable and avoids duplicating bit-shift calculations throughout your application.
Common permissions
Section titled āCommon permissionsā| Getter | Meaning |
|---|---|
.viewChannel |
View a channel |
.sendMessages |
Send messages |
.manageMessages |
Manage messages |
.manageChannels |
Manage channels |
.manageRoles |
Manage roles |
.kickMembers |
Kick members |
.banMembers |
Ban members |
.moderateMembers |
Timeout/moderate members |
.connect |
Connect to voice |
.speak |
Speak in voice |
.administrator |
Full administrator permission |
Lunibee exposes the complete Discord permission set through the same camelCase style. Use autocomplete on Permission or member.permissions when you need a less common flag.