feat: separate admin and mod categories

This commit is contained in:
2025-12-03 14:27:36 -08:00
parent 262cdcb702
commit bd3f2c6388
+11 -9
View File
@@ -29,6 +29,7 @@ interface Guild {
}
interface Stats {
admin: Array<string>;
community: Array<string>;
moderating: Array<string>;
owned: Array<string>;
@@ -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<Guild>): void => {
// Arrays to store names instead of just counts
const stats: Stats = {
admin: [],
community: [],
moderating: [],
owned: [],
@@ -96,18 +99,17 @@ const analyzeGuilds = (guilds: Array<Guild>): 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);
}