From ba647c69ceaa7dbbd58c86a12da1dc8e48436a45 Mon Sep 17 00:00:00 2001 From: Dragory <2606411+Dragory@users.noreply.github.com> Date: Tue, 21 Jan 2020 00:00:47 +0200 Subject: [PATCH] Make !server numbers more consistent Offline member count is now derived from guild member count and calculated online member count. The numbers might still not match the real member counts, but at least they add up to the total member count. Eris 0.11.2 also made Guild.fetchAllMembers() return a promise, which means !server will now properly wait for all members to load. --- backend/src/plugins/Utility.ts | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/backend/src/plugins/Utility.ts b/backend/src/plugins/Utility.ts index aa1fdd60..d3b30335 100644 --- a/backend/src/plugins/Utility.ts +++ b/backend/src/plugins/Utility.ts @@ -1051,11 +1051,12 @@ export class UtilityPlugin extends ZeppelinPlugin { `) + embedPadding, }); - const onlineMembers = this.guild.members.filter(m => m.status === "online"); - const dndMembers = this.guild.members.filter(m => m.status === "dnd"); - const idleMembers = this.guild.members.filter(m => m.status === "idle"); - const offlineMembers = this.guild.members.filter(m => m.status === "offline"); - const notOfflineMembers = this.guild.members.filter(m => m.status !== "offline"); + const onlineMemberCount = this.guild.members.filter(m => m.status !== "offline").length; + const offlineMemberCount = this.guild.memberCount - onlineMemberCount; + + const onlineStatusMemberCount = this.guild.members.filter(m => m.status === "online").length; + const dndStatusMemberCount = this.guild.members.filter(m => m.status === "dnd").length; + const idleStatusMemberCount = this.guild.members.filter(m => m.status === "idle").length; const restGuild = await this.bot.getRESTGuild(this.guildId); @@ -1064,7 +1065,7 @@ export class UtilityPlugin extends ZeppelinPlugin { memberCountTotalLines += `\nMax: **${formatNumber(restGuild.maxMembers)}**`; } - let memberCountOnlineLines = `Online: **${formatNumber(notOfflineMembers.length)}**`; + let memberCountOnlineLines = `Online: **${formatNumber(onlineMemberCount)}**`; if (restGuild.maxPresences) { memberCountOnlineLines += `\nMax online: ${formatNumber(restGuild.maxPresences)}`; } @@ -1075,10 +1076,10 @@ export class UtilityPlugin extends ZeppelinPlugin { value: trimLines(` ${memberCountTotalLines} ${memberCountOnlineLines} - Offline: **${formatNumber(offlineMembers.length)}** - <:zep_online:665907874450636810> Online: **${formatNumber(onlineMembers.length)}** - <:zep_idle:665908128331726848> Idle: **${formatNumber(idleMembers.length)}** - <:zep_dnd:665908138741858365> DND: **${formatNumber(dndMembers.length)}** + Offline: **${formatNumber(offlineMemberCount)}** + <:zep_online:665907874450636810> Online: **${formatNumber(onlineStatusMemberCount)}** + <:zep_idle:665908128331726848> Idle: **${formatNumber(idleStatusMemberCount)}** + <:zep_dnd:665908138741858365> DND: **${formatNumber(dndStatusMemberCount)}** `), });