Retrieves the number of members with specific roles in your server. Responds to a slash command called /membercount, and requires privileged intents to be enabled for your bot.
const lib = require('lib')({token: process.env.STDLIB_SECRET_TOKEN});
const member_id = 'insert role id number here'
const offmbr_id = 'insert role id number here'
const guild_id = `${context.params.event.guild_id}`
let members = await lib.discord.guilds['@0.1.0'].members.list({ guild_id, limit: 1000 });
// Get all members then filter down to those with the given role ID
// Note: Only works for up to 1000 members
function roleCount(role_id)
{
let membersWithRoleCount = 0;
let membersWithRole = members.filter(m => !!m.roles.find(r => r === role_id));
membersWithRoleCount = membersWithRole.length;
return `${membersWithRoleCount}`
}
await lib.discord.channels['@0.1.1'].messages.create({
channel_id: `${context.params.event.channel_id}`,
content: '',
embed:
{
description: '**Member Counts**',
color: 0x33669a,
fields:
[
{
name: '**Total Discord Users**',
value: members.length,
inline: true,
},
{
name: '**Total Members**',
value: roleCount(`${member_id}`),
inline: true
},
{
name: '**Total Official Members**',
value: roleCount(`${offmbr_id}`),
inline: true
}
]
}
});