aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Johannes Christ <[email protected]>2020-01-12 11:23:15 +0100
committerGravatar Johannes Christ <[email protected]>2020-01-12 11:58:57 +0100
commit189a5db5010b7337278b8b534b8e76ec0b1a6acb (patch)
tree6aa5fc0c558e9a01d251d16b1ebec01914ca4276
parentOnly request offline members for large guilds. (diff)
Track member joins and leaves.
Diffstat (limited to '')
-rw-r--r--bot/cogs/metrics.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/bot/cogs/metrics.py b/bot/cogs/metrics.py
index e356ba294..ce58f763f 100644
--- a/bot/cogs/metrics.py
+++ b/bot/cogs/metrics.py
@@ -1,6 +1,6 @@
from collections import defaultdict
-from discord import Status
+from discord import Member
from discord.ext.commands import Cog
from prometheus_client import Gauge
@@ -35,6 +35,20 @@ class Metrics(Cog):
for status, count in members.items():
self.guild_members.labels(guild_id=guild_id, status=str(status)).set(count)
+ @Cog.listener()
+ async def on_member_join(self, member: Member) -> None:
+ self.guild_members.labels(guild_id=member.guild.id, status=str(member.status)).inc()
+
+ @Cog.listener()
+ async def on_member_leave(self, member: Member) -> None:
+ self.guild_members.labels(guild_id=member.guild.id, status=str(member.status)).dec()
+
+ @Cog.listener()
+ async def on_member_update(self, before: Member, after: Member) -> None:
+ if before.status is not after.status:
+ self.guild_members.labels(guild_id=after.guild.id, status=str(before.status)).dec()
+ self.guild_members.labels(guild_id=after.guild.id, status=str(after.status)).inc()
+
def setup(bot: Bot) -> None:
"""Load the Metrics cog."""