Use a slash command like /membercount to create an embed that will display the counts for each given role. You will have to manually insert the role IDs on line 3 - 7 in the script.
//Overall script created by MagicalMongoose
const lib = require('lib')({token: process.env.STDLIB_SECRET_TOKEN});
const cpe = context.params.event;
const member_id = ''; //Main access to server role ID
const offmbr_id = ''; //Paid Member role ID
const nitrob_id = ``; //Nitro Booster role ID
const guild_id = `${cpe.guild_id}`;
//Get all members even past 1000, written by Charles Watson
const get_all_members = async (limit = 1000) => {
const allMembers = [];
let last_id;
while (true) {
const options = {limit};
if (last_id) {
options.after = `${last_id}`;
}
const members = await lib.discord.guilds['@0.1.0'].members.list({
guild_id: `${context.params.event.guild_id}`,
...options,
});
allMembers.push(...members);
if (members[members.length - 1]) {
last_id = members[members.length - 1].user.id;
}
if (members.length !== limit) {
break;
}
}
return allMembers;
};
let members = await get_all_members();
//End of Charles Watson's code
//Not written by MagicalMongoose
function roleCount(role_id) {
let membersWithRoleCount = 0;
let membersWithRole = members.filter(
(m) => !!m.roles.find((r) => r === role_id)
);
membersWithRoleCount = membersWithRole.length;
return `${membersWithRoleCount}`;
}
let user = await lib.discord.guilds['@0.1.0'].members.retrieve({
user_id: `${cpe.member.user.id}`,
guild_id: `${cpe.guild_id}`,
});
await lib.discord.channels['@0.1.1'].messages.create({
channel_id: `${cpe.channel_id}`,
content: '',
embed: {
description: '**Member Counts**',
color: 0x33669a,
fields: [
{
name: ':earth_americas:**Total Discord Users**',
value: members.length,
},
{
name: ':cow:**Total Members**',
value: roleCount(`${member_id}`),
},
{
name: ':money_with_wings:**Total Official Members**',
value: roleCount(`${offmbr_id}`),
},
{
name: ':gem:**Total Nitro Boosters**',
value: roleCount(`${nitrob_id}`),
},
],
author: {
name: `${user.user.username}`,
icon_url: `${user.user.avatar_url}`,
},
},
});