user9949993
user9949993

Reputation:

Online User count from a Discord Role

I want my Discord Bot to display the Number of Online Users of a Role as an Activity.
I can't seem to figure it out and i can't find anything on the Web.
Can someone give me example code or explain it to me?

Upvotes: 0

Views: 3036

Answers (2)

Lauren Yim
Lauren Yim

Reputation: 14088

You can also use filter:

// Discord.js v12/v13 (latest version):
const count = guild.members.cache.filter(m =>
  // If the member has the role
  m.roles.cache.has('role id') &&
  // and the member is online
  m.presence.status === 'online'
).size

// Discord.js v11:
const count = guild.members.filter(m =>
  // If the member has the role
  m.roles.has('role id') &&
  // and the member is online
  m.presence.status === 'online'
).size

// Use count here:
client.user.setActivity('...')

To get a guild by its ID, use this:

// v12/v13
const guild = client.guilds.cache.get('id')
// v11
const guild = client.guilds.get('id')

Upvotes: 1

Federico Grandi
Federico Grandi

Reputation: 6816

You can use Guild.members.forEach() to loop through every member of the guild, then if they have that role (you can use GuildMember.roles.has(Role.id) to check that) increase a counter. When you have finished your loop through the members, use the counter in your Client.user.setActivity().
That is what you need in order to get what you want.

Try this stuff, if you still have problems post a MCVE and we'll help you, but first you need to try yourself.

Upvotes: 1

Related Questions