mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
70 lines
1.5 KiB
JavaScript
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; |