3
0
Fork 0
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:
metal 2023-03-11 14:31:59 +00:00 committed by GitHub
parent 8281299369
commit fda9a35f29
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
23 changed files with 75 additions and 70 deletions

View file

@ -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;

View file

@ -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);
}

View file

@ -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);
}
/**

View file

@ -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;
}

View file

@ -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)