seyfert
Version:
The most advanced framework for discord bots
44 lines (43 loc) • 1.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PermissionsBitField = void 0;
const types_1 = require("../../types");
const BitField_1 = require("./BitField");
class PermissionsBitField extends BitField_1.BitField {
Flags = types_1.PermissionFlagsBits;
static All = Object.values(types_1.PermissionFlagsBits).reduce((acc, value) => acc | value, 0n);
constructor(bitfields) {
super();
if (bitfields)
this.bit = this.resolve(bitfields);
}
has(bits) {
return super.has(bits) || super.has(['Administrator']);
}
strictHas(bits) {
return super.has(bits);
}
resolve(bits) {
return (Array.isArray(bits) ? bits : [bits]).reduce((acc, cur) => acc | PermissionsBitField.resolve([cur]), BitField_1.BitField.None);
}
static resolve(bits) {
let bitsResult = 0n;
for (const bit of Array.isArray(bits) ? bits : [bits]) {
switch (typeof bit) {
case 'string':
bitsResult |= PermissionsBitField.resolve(types_1.PermissionFlagsBits[bit]);
break;
case 'bigint':
bitsResult |= bit;
break;
default:
throw new TypeError(`Cannot resolve permission: ${typeof bit === 'symbol' ? String(bit) : bit}`);
}
}
return bitsResult;
}
toString() {
return this.bit.toString();
}
}
exports.PermissionsBitField = PermissionsBitField;