mirror of
https://github.com/ZeppelinBot/Zeppelin.git
synced 2025-05-27 11:15:02 +00:00
migrate permissions
Signed-off-by: GitHub <noreply@github.com>
This commit is contained in:
parent
8281299369
commit
fda9a35f29
23 changed files with 75 additions and 70 deletions
|
@ -1,9 +1,9 @@
|
|||
import { Guild, GuildMember, Permissions, Role, Snowflake } from "discord.js";
|
||||
import { Guild, GuildMember, PermissionsBitField, Role, Snowflake } from "discord.js";
|
||||
import { getMissingPermissions } from "./getMissingPermissions";
|
||||
import { hasDiscordPermissions } from "./hasDiscordPermissions";
|
||||
|
||||
export function canAssignRole(guild: Guild, member: GuildMember, roleId: string) {
|
||||
if (getMissingPermissions(member.permissions, Permissions.FLAGS.MANAGE_ROLES)) {
|
||||
if (getMissingPermissions(member.permissions, PermissionsBitField.Flags.ManageRoles)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,7 @@ export function canAssignRole(guild: Guild, member: GuildMember, roleId: string)
|
|||
|
||||
const memberRoles = member.roles.cache;
|
||||
const highestRoleWithManageRoles = memberRoles.reduce<Role | null>((highest, role) => {
|
||||
if (!hasDiscordPermissions(role.permissions, Permissions.FLAGS.MANAGE_ROLES)) return highest;
|
||||
if (!hasDiscordPermissions(role.permissions, PermissionsBitField.Flags.ManageRoles)) return highest;
|
||||
if (highest == null) return role;
|
||||
if (role.position > highest.position) return role;
|
||||
return highest;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { Permissions } from "discord.js";
|
||||
import { PermissionsBitField } from "discord.js";
|
||||
|
||||
/**
|
||||
* @param resolvedPermissions A Permission object from e.g. GuildChannel#permissionsFor() or Member#permission
|
||||
|
@ -6,13 +6,13 @@ import { Permissions } from "discord.js";
|
|||
* @return Bitmask of missing permissions
|
||||
*/
|
||||
export function getMissingPermissions(
|
||||
resolvedPermissions: Permissions | Readonly<Permissions>,
|
||||
resolvedPermissions: PermissionsBitField | Readonly<PermissionsBitField>,
|
||||
requiredPermissions: number | bigint,
|
||||
): bigint {
|
||||
const allowedPermissions = resolvedPermissions;
|
||||
const nRequiredPermissions = requiredPermissions;
|
||||
|
||||
if (Boolean(allowedPermissions.bitfield & Permissions.FLAGS.ADMINISTRATOR)) {
|
||||
if (Boolean(allowedPermissions.bitfield & PermissionsBitField.Flags.Administrator)) {
|
||||
return BigInt(0);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
import { Permissions } from "discord.js";
|
||||
import { PermissionsBitField } from "discord.js";
|
||||
|
||||
const permissionNumberToName: Map<bigint, string> = new Map();
|
||||
const ignoredPermissionConstants = ["all", "allGuild", "allText", "allVoice"];
|
||||
|
||||
for (const key in Permissions.FLAGS) {
|
||||
for (const key in PermissionsBitField.Flags) {
|
||||
if (ignoredPermissionConstants.includes(key)) continue;
|
||||
permissionNumberToName.set(BigInt(Permissions.FLAGS[key]), key);
|
||||
permissionNumberToName.set(BigInt(PermissionsBitField.Flags[key]), key);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
import { Permissions, PermissionString } from "discord.js";
|
||||
import { PermissionsBitField } from "discord.js";
|
||||
|
||||
/**
|
||||
* @param resolvedPermissions A Permission object from e.g. GuildChannel#permissionsOf() or Member#permission
|
||||
* @param requiredPermissions Bitmask of required permissions
|
||||
*/
|
||||
export function hasDiscordPermissions(
|
||||
resolvedPermissions: Permissions | Readonly<Permissions> | null,
|
||||
resolvedPermissions: PermissionsBitField | Readonly<PermissionsBitField> | null,
|
||||
requiredPermissions: number | bigint,
|
||||
) {
|
||||
if (resolvedPermissions == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (resolvedPermissions.has(Permissions.FLAGS.ADMINISTRATOR)) {
|
||||
if (resolvedPermissions.has(PermissionsBitField.Flags.Administrator)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
import { Permissions } from "discord.js";
|
||||
import { PermissionsBitField } from "discord.js";
|
||||
|
||||
/**
|
||||
* Bitmask of permissions required to read messages in a channel
|
||||
*/
|
||||
export const readChannelPermissions = Permissions.FLAGS.VIEW_CHANNEL | Permissions.FLAGS.READ_MESSAGE_HISTORY;
|
||||
export const readChannelPermissions =
|
||||
PermissionsBitField.Flags.ViewChannel | PermissionsBitField.Flags.ReadMessageHistory;
|
||||
|
||||
/**
|
||||
* Bitmask of permissions required to read messages in a channel (bigint)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue