all repos — stealth-developers @ 368b07cad5da2c8b4fee0adc638026fc1eb75003

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
import { db, guild, manager } from "@/database";
import type { GuildMember } from "discord.js";
import { getGuild, getManagerRoleIds } from "./queries";

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

	const guild = await getGuild(member.guild.id);
	const managers = await getManagerRoleIds(guild.data.guildId);
	if (!guild || !managers || managers.length === 0) return false;

	return member.roles.cache.some((role) => managers.includes(role.id));
}