Files
discord.js/src/Structures/ChannelPermissions.js

62 lines
1.8 KiB
JavaScript

"use strict";
import {Permissions} from "../Constants";
export default 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);
}
}