"use strict"; var Permissions = require("../Constants.js").Permissions; class ChannelPermissions { constructor(permissions) { this.permissions = permissions; } serialise(explicit) { var hp = perm => this.hasPermission(perm, explicit); return { // general createInstantInvite: hp(Permissions.createInstantInvite), kickMembers: hp(Permissions.kickMembers), banMembers: hp(Permissions.banMembers), managePermissions: hp(Permissions.managePermissions), manageChannel: hp(Permissions.manageChannel), manageServer: hp(Permissions.manageServer), // text readMessages: hp(Permissions.readMessages), sendMessages: hp(Permissions.sendMessages), sendTTSMessages: hp(Permissions.sendTTSMessages), manageMessages: hp(Permissions.manageMessages), embedLinks: hp(Permissions.embedLinks), attachFiles: hp(Permissions.attachFiles), readMessageHistory: hp(Permissions.readMessageHistory), mentionEveryone: hp(Permissions.mentionEveryone), // voice voiceConnect: hp(Permissions.voiceConnect), voiceSpeak: hp(Permissions.voiceSpeak), voiceMuteMembers: hp(Permissions.voiceMuteMembers), voiceDeafenMembers: hp(Permissions.voiceDeafenMembers), voiceMoveMembers: hp(Permissions.voiceMoveMembers), voiceUseVAD: hp(Permissions.voiceUseVAD) }; } serialize() { // ;n; return this.serialise(); } hasPermission(perm, explicit = false) { if (perm instanceof String || typeof perm === "string") { perm = Permissions[perm]; } if (!perm) { return false; } if (!explicit) { // implicit permissions allowed if (!!(this.permissions & Permissions.manageRoles)) { // manageRoles allowed, they have all permissions return true; } } return !!(this.permissions & perm); } } module.exports = ChannelPermissions;