!server: use new approximate counts for member/online count

This commit is contained in:
Dragory 2020-08-05 03:56:19 +03:00
parent 925cf718e7
commit 741a742eb8
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1

View file

@ -46,20 +46,23 @@ export const ServerCmd = utilityCmd({
10 * MINUTES,
);
// For servers with a vanity URL, we can use the numbers from the invite for online count
// (which is nowadays usually more accurate for large servers)
const invite = guild.vanityURL
? ((await memoize(
() => pluginData.client.getInvite(guild.vanityURL, true),
`getInvite_${guild.vanityURL}`,
10 * MINUTES,
)) as RESTChannelInvite)
: null;
const totalMembers = restGuild.memberCount ?? restGuild.approximateMemberCount;
let onlineMemberCount = restGuild.approximatePresenceCount;
const totalMembers = invite?.memberCount || guild.memberCount;
if (totalMembers == null || onlineMemberCount == null) {
// For servers with a vanity URL, we can also use the numbers from the invite for online count
const invite = guild.vanityURL
? ((await memoize(
() => pluginData.client.getInvite(guild.vanityURL, true),
`getInvite_${guild.vanityURL}`,
10 * MINUTES,
)) as RESTChannelInvite)
: null;
const onlineMemberCount = invite ? invite.presenceCount : guild.members.filter(m => m.status !== "offline").length;
const offlineMemberCount = guild.memberCount - onlineMemberCount;
onlineMemberCount = invite ? invite.presenceCount : guild.members.filter(m => m.status !== "offline").length;
}
const offlineMemberCount = totalMembers - onlineMemberCount;
let memberCountTotalLines = `Total: **${formatNumber(totalMembers)}**`;
if (restGuild.maxMembers) {