mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-10 00:23:30 +01:00
62 lines
1.8 KiB
JavaScript
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);
|
|
}
|
|
}
|