mirror of
https://github.com/Hessenuk/DiscordTickets.git
synced 2025-09-06 02:01:26 +03:00
perf: cache staff roles
This commit is contained in:
@@ -11,6 +11,29 @@ module.exports.getCommonGuilds = async (client, userId) => await client.guilds.c
|
||||
return !!member;
|
||||
});
|
||||
|
||||
/**
|
||||
* @param {import("discord.js").Guild} guild
|
||||
* @returns {Promise<string[]>}
|
||||
*/
|
||||
const updateStaffRoles = async guild => {
|
||||
const { categories } = await guild.client.prisma.guild.findUnique({
|
||||
select: { categories: { select: { staffRoles: true } } },
|
||||
where: { id: guild.id },
|
||||
});
|
||||
const staffRoles = [
|
||||
...new Set(
|
||||
categories.reduce((acc, c) => {
|
||||
acc.push(...c.staffRoles);
|
||||
return acc;
|
||||
}, []),
|
||||
),
|
||||
];
|
||||
await guild.client.keyv.set(`cache/guild-staff:${guild.id}`, staffRoles);
|
||||
return staffRoles;
|
||||
};
|
||||
|
||||
module.exports.updateStaffRoles = updateStaffRoles;
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {import("discord.js").Guild} guild
|
||||
@@ -20,12 +43,9 @@ module.exports.getCommonGuilds = async (client, userId) => await client.guilds.c
|
||||
module.exports.isStaff = async (guild, userId) => {
|
||||
/** @type {import("client")} */
|
||||
const client = guild.client;
|
||||
if (guild.client.supers.includes(userId)) return true;
|
||||
const guildMember = await guild.members.fetch(userId);
|
||||
if (guildMember?.permissions.has(PermissionsBitField.Flags.ManageGuild)) return true;
|
||||
const { categories } = await client.prisma.guild.findUnique({
|
||||
select: { categories: true },
|
||||
where: { id: guild.id },
|
||||
});
|
||||
return categories.some(cat => cat.roles.some(r => guildMember.roles.cache.has(r)));
|
||||
if (client.supers.includes(userId)) return true;
|
||||
const guildMember = guild.members.cache.get(userId) || await guild.members.fetch(userId);
|
||||
if (guildMember.permissions.has(PermissionsBitField.Flags.ManageGuild)) return true;
|
||||
const staffRoles = await client.keyv.get(`cache/guild-staff:${guild.id}`) || await updateStaffRoles(guild);
|
||||
return staffRoles.some(r => guildMember.roles.cache.has(r));
|
||||
};
|
Reference in New Issue
Block a user