Hardcoded roles for my server, but dynamically changes with how many users have each role and displays percents in embed. This is setup for /gamepercents!
const lib = require('lib')({token: process.env.STDLIB_SECRET_TOKEN});
const cod_id = '846031019526193162'
const lol_id = '493450244810604555'
const ow_id = '493450127990587392'
const rl_id = '493450556308717571'
const sb_id = '493450614781771777'
const val_id = '735920950645883003'
let totalPlayers = 0;
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));
totalPlayers += membersWithRole.length;
membersWithRoleCount = membersWithRole.length;
return `${membersWithRoleCount}`
}
let gameCount = [roleCount(`${cod_id}`), roleCount(`${lol_id}`), roleCount(`${ow_id}`),
roleCount(`${rl_id}`), roleCount(`${sb_id}`), roleCount(`${val_id}`), ]
let value = [];
for (let i = 0; i < gameCount.length; i++)
{
value[i] = `${gameCount[i]}`+ " ----- " + `${Math.round(gameCount[i]/totalPlayers*100)}` + "%"
}
await lib.discord.channels['@0.1.1'].messages.create({
channel_id: `${context.params.event.channel_id}`,
content: '',
embed:
{
description: '**Game Percents**',
color: 0x33669a,
fields:
[
{
name: ':zombie:**CoD Players**',
value: value[0],
},
{
name: ':bow_and_arrow:**LoL Players**',
value: value[1],
},
{
name: ':owl:**OW Players**',
value: value[2],
},
{
name: ':soccer:**RL Players**',
value: value[3],
},
{
name: ':punch:**Smash Players**',
value: value[4],
},
{
name: ':gun:**Val Players**',
value: value[5],
}
]
}
});