Files
discord.js/lib/Structures/PermissionOverwrite.js
2015-11-22 15:01:42 +00:00

70 lines
1.5 KiB
JavaScript

"use strict";
var Permissions = require("../Constants.js").Permissions;
class PermissionOverwrite {
constructor(data) {
this.id = data.id;
this.type = data.type; // member or role
this.deny = data.deny;
this.allow = data.allow;
}
// returns an array of allowed permissions
get allowed() {
var allowed = [];
for (var permName in Permissions) {
if (permName === "manageRoles" || permName === "manageChannels") {
// these permissions do not exist in overwrites.
continue;
}
if (!!(this.allow & Permissions[permName])) {
allowed.push(permName);
}
}
return allowed;
}
// returns an array of denied permissions
get denied() {
var denied = [];
for (var permName in Permissions) {
if (permName === "manageRoles" || permName === "manageChannels") {
// these permissions do not exist in overwrites.
continue;
}
if (!!(this.deny & Permissions[permName])) {
denied.push(permName);
}
}
return denied;
}
setAllowed(allowedArray) {
allowedArray.forEach(permission => {
if (permission instanceof String || typeof permission === "string") {
permission = Permissions[permission];
}
if (permission) {
this.allow |= 1 << permission;
}
});
}
setDenied(deniedArray) {
deniedArray.forEach(permission => {
if (permission instanceof String || typeof permission === "string") {
permission = Permissions[permission];
}
if (permission) {
this.deny |= 1 << permission;
}
});
}
}
module.exports = PermissionOverwrite;