From 9d9a764b1de5530bafee4c33910eec6fcbc32225 Mon Sep 17 00:00:00 2001 From: SowinskiBraeden Date: Mon, 22 Jan 2024 20:08:36 -0800 Subject: [PATCH] clear any deleted roles still stored in allowedRoles during verification --- structures/LinesPoliceCadBot.js | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/structures/LinesPoliceCadBot.js b/structures/LinesPoliceCadBot.js index 3c3946a..0ab6ced 100644 --- a/structures/LinesPoliceCadBot.js +++ b/structures/LinesPoliceCadBot.js @@ -218,7 +218,8 @@ class LinesPoliceCadBot extends Client { async checkRoleStatus(rolesCache, serverID, isList) { let hasRole = false; - let guild = await this.dbo.collection("prefixes").findOne({"server.serverID":serverID}).then(guild => guild); + let guild = await this.dbo.collection("prefixes").findOne({"server.serverID": serverID}).then(guild => guild); + // If user has one of any in the list of allowed roles, hasRole is true for (let i = 0; i < guild.server.allowedRoles.length; i++) { if (!isList) { @@ -269,6 +270,27 @@ class LinesPoliceCadBot extends Client { let { customRoleStatus } = await this.GetGuild(serverID) if (!customRoleStatus) return false; // There is no role limits + // Clear any deleted roles + const guild = await this.guilds.cache.get(serverID); + let filteredRoles = []; + let update = false; + for (let i = 0; i < guild.server.allowedRoles.length; i++) { + const role = guild.roles.cache.find(role => role.id == guild.server.allowedRoles[i]) + if (role) filteredRoles.push(role); + if (!role) update = true; + } + + if (update) { + let newHasCustomRoles = filteredRoles > 0; + + await this.dbo.collection("prefixes").updateOne({ 'server.serverID': serverID }, { $set: { + 'server.allowedRoles': filteredRoles, + 'server.hasCustomRoles': newHasCustomRoles, + }}, (err, res) => { + if (err) throw err; + }); + } + let hasRole = await this.checkRoleStatus(rolesCache, serverID, isList); if (!hasRole) return false; // User does not have role