2020-11-15 07:32:46 +00:00
|
|
|
// 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 } from './bitfield.ts'
|
2020-11-15 07:32:46 +00:00
|
|
|
|
2020-12-02 12:29:52 +00:00
|
|
|
export type PermissionResolvable =
|
|
|
|
| string
|
|
|
|
| number
|
|
|
|
| Permissions
|
|
|
|
| PermissionResolvable[]
|
2020-11-15 07:32:46 +00:00
|
|
|
|
2020-12-03 04:06:41 +00:00
|
|
|
/** Manages Discord's Bit-based Permissions */
|
2020-11-15 07:32:46 +00:00
|
|
|
export class Permissions extends BitField {
|
|
|
|
static DEFAULT = 104324673
|
|
|
|
static ALL = Object.values(PermissionFlags).reduce((all, p) => all | p, 0)
|
|
|
|
|
|
|
|
constructor(bits: any) {
|
|
|
|
super(PermissionFlags, bits)
|
|
|
|
}
|
|
|
|
|
|
|
|
any(permission: PermissionResolvable, checkAdmin = true): boolean {
|
2020-12-02 12:29:52 +00:00
|
|
|
return (
|
|
|
|
(checkAdmin && super.has(this.flags.ADMINISTRATOR)) ||
|
|
|
|
super.any(permission as any)
|
|
|
|
)
|
2020-11-15 07:32:46 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
has(permission: PermissionResolvable, checkAdmin = true): boolean {
|
2020-12-02 12:29:52 +00:00
|
|
|
return (
|
|
|
|
(checkAdmin && super.has(this.flags.ADMINISTRATOR)) ||
|
|
|
|
super.has(permission as any)
|
|
|
|
)
|
2020-11-15 07:32:46 +00:00
|
|
|
}
|
2020-12-02 12:29:52 +00:00
|
|
|
}
|