From bd3f2c6388d859d783b1bc62204efcb00804240f Mon Sep 17 00:00:00 2001 From: Naomi Carrigan Date: Wed, 3 Dec 2025 14:27:36 -0800 Subject: [PATCH] feat: separate admin and mod categories --- src/discord/guildCount.ts | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/discord/guildCount.ts b/src/discord/guildCount.ts index 7e5dd73..544d7e1 100644 --- a/src/discord/guildCount.ts +++ b/src/discord/guildCount.ts @@ -29,6 +29,7 @@ interface Guild { } interface Stats { + admin: Array; community: Array; moderating: Array; owned: Array; @@ -62,7 +63,8 @@ const printReport = (stats: Stats): void => { console.log(`Total Servers Joined: ${stats.total.toString()}\n`); printList("Owned Servers", stats.owned, "👑"); - printList("Moderating (Non-Owned)", stats.moderating, "🛡️ "); + printList("Admin (Non-Owned)", stats.admin, "⚙️ "); + printList("Moderating (Non-Admin/Non-Owned)", stats.moderating, "🛡️ "); printList("Partnered Servers", stats.partnered, "🤝"); printList("Verified Servers", stats.verified, "✅"); printList("Community/Public Servers", stats.community, "🌍"); @@ -78,6 +80,7 @@ const checkForPermission = (perms: bigint, permission: bigint): boolean => { const analyzeGuilds = (guilds: Array): void => { // Arrays to store names instead of just counts const stats: Stats = { + admin: [], community: [], moderating: [], owned: [], @@ -96,18 +99,17 @@ const analyzeGuilds = (guilds: Array): void => { stats.owned.push(name ?? "Unknown"); } - /* - * 2. Moderation - * We consider you a "Moderator" if you have specific mod permissions, - * Even if you don't own the server. - */ - const isModerator - = checkForPermission(perms, permissions.administrator) + const isAdmin = checkForPermission(perms, permissions.administrator); + const hasModeratorPermissions + = isAdmin || checkForPermission(perms, permissions.manageGuild) || checkForPermission(perms, permissions.banMembers) || checkForPermission(perms, permissions.kickMembers) || checkForPermission(perms, permissions.moderateMembers); - if (isModerator && owner !== true) { + + if (isAdmin && owner !== true) { + stats.admin.push(name ?? id); + } else if (hasModeratorPermissions && owner !== true && !isAdmin) { stats.moderating.push(name ?? id); }