harmony/src/utils/permissions.ts

33 lines
963 B
TypeScript
Raw Permalink Normal View History

// Ported from https://github.com/discordjs/discord.js/blob/master/src/util/Permissions.js
2020-12-02 12:29:52 +00:00
import { PermissionFlags } from '../types/permissionFlags.ts'
import { BitField, BitFieldResolvable } from './bitfield.ts'
2021-02-21 13:14:14 +00:00
export type PermissionResolvable = BitFieldResolvable
2020-12-03 04:06:41 +00:00
/** Manages Discord's Bit-based Permissions */
export class Permissions extends BitField {
2021-02-21 13:14:14 +00:00
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 {
2020-12-02 12:29:52 +00:00
return (
2021-02-21 13:14:14 +00:00
(checkAdmin && super.has(this.flags().ADMINISTRATOR)) ||
2020-12-02 12:29:52 +00:00
super.any(permission as any)
)
}
has(permission: PermissionResolvable, checkAdmin = true): boolean {
2020-12-02 12:29:52 +00:00
return (
2021-02-21 13:14:14 +00:00
(checkAdmin && super.has(this.flags().ADMINISTRATOR)) ||
2020-12-02 12:29:52 +00:00
super.has(permission as any)
)
}
2020-12-02 12:29:52 +00:00
}