33 lines
963 B
TypeScript
33 lines
963 B
TypeScript
// Ported from https://github.com/discordjs/discord.js/blob/master/src/util/Permissions.js
|
|
import { PermissionFlags } from '../types/permissionFlags.ts'
|
|
import { BitField, BitFieldResolvable } from './bitfield.ts'
|
|
|
|
export type PermissionResolvable = BitFieldResolvable
|
|
|
|
/** Manages Discord's Bit-based Permissions */
|
|
export class Permissions extends BitField {
|
|
static DEFAULT = 104324673n
|
|
static ALL = Object.values(PermissionFlags).reduce(
|
|
(all, p) => BigInt(all) | BigInt(p),
|
|
0n
|
|
)
|
|
|
|
constructor(bits: BitFieldResolvable) {
|
|
super(PermissionFlags, bits)
|
|
}
|
|
|
|
any(permission: PermissionResolvable, checkAdmin = true): boolean {
|
|
return (
|
|
(checkAdmin && super.has(this.flags().ADMINISTRATOR)) ||
|
|
super.any(permission as any)
|
|
)
|
|
}
|
|
|
|
has(permission: PermissionResolvable, checkAdmin = true): boolean {
|
|
return (
|
|
(checkAdmin && super.has(this.flags().ADMINISTRATOR)) ||
|
|
super.has(permission as any)
|
|
)
|
|
}
|
|
}
|