all repos — stealth-developers @ 1dcd59c5bf321ecbb5570d25808717d179b5fbdc

src/utils/permissions.ts (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
import type { APIGuildMember, GuildMember } from "discord.js";
import { GuildModel } from "../database/schemas.ts";

export async function hasManagerPermissions(
	member: GuildMember | APIGuildMember,
): Promise<boolean> {
	if (
		member.permissions.has("ManageGuild") ||
		member.guild.ownerId === member.id
	) {
		return true;
	}

	const guild = await GuildModel.findOne({
		guild_id: member.guild.id,
	});

	if (!guild || guild.manager_roles.length === 0) {
		return false;
	}

	return member.roles.cache.some((role) =>
		guild.manager_roles.includes(role.id),
	);
}