From 5adcf3478edc8542f097ef2726d47b72d525f26c Mon Sep 17 00:00:00 2001 From: esefxdz Date: Wed, 7 Oct 2026 11:33:58 +0300 Subject: [PATCH] statchannel: member count channel Co-Authored-By: Claude Opus 5.5 --- cogs/help.py | 2 ++ cogs/statchannel.py | 17 +++++++++++++++++ credentials_test.env | 2 ++ 3 files changed, 21 insertions(+) diff --git a/cogs/help.py b/cogs/help.py index a1a3e18..58abe14 100644 --- a/cogs/help.py +++ b/cogs/help.py @@ -149,6 +149,8 @@ CATEGORIES: dict[str, tuple[str, str, str, str]] = { "with a timestamp that shows in everyone's own time zone.\n\n" "**Strinova player count** — a channel name that shows how many people are " "playing Strinova, updated every 10 minutes.\n\n" + "**Member count** — a channel name that shows how many members the server has, " + "updated every 10 minutes.\n\n" "**Custom roles** — in the roles channel, press *Get my role* and I'll DM you " "to make your own colored role.\n\n" "**Website** — the PC's live stats are shown on https://esefos.netlify.app" diff --git a/cogs/statchannel.py b/cogs/statchannel.py index c4f5707..5b213d9 100644 --- a/cogs/statchannel.py +++ b/cogs/statchannel.py @@ -12,14 +12,18 @@ class StatChannel(commands.Cog): self.channel_id = _parse_id('STRINOVA_STAT_CHANNEL_ID') self.channel_id_mao = _parse_id('STRINOVA_STAT_CHANNEL_ID_MAO') + self.member_channel_id = _parse_id('MEMBER_COUNT_CHANNEL_ID') self.update_stat.start() if self.channel_id_mao is not None: self.update_stat_mao.start() + if self.member_channel_id is not None: + self.update_members.start() def cog_unload(self): self.update_stat.cancel() self.update_stat_mao.cancel() + self.update_members.cancel() async def _fetch_and_update(self, channel_id): try: @@ -41,6 +45,15 @@ class StatChannel(commands.Cog): async def update_stat_mao(self): await self._fetch_and_update(self.channel_id_mao) + @tasks.loop(minutes=10) + async def update_members(self): + try: + channel = self.bot.get_channel(self.member_channel_id) + if channel: + await channel.edit(name=f'Member Count: {channel.guild.member_count:,}') + except Exception as e: + print(f'member count update failed (channel {self.member_channel_id}): {e}') + @update_stat.before_loop async def before_update_stat(self): await self.bot.wait_until_ready() @@ -49,5 +62,9 @@ class StatChannel(commands.Cog): async def before_update_stat_mao(self): await self.bot.wait_until_ready() + @update_members.before_loop + async def before_update_members(self): + await self.bot.wait_until_ready() + async def setup(bot): await bot.add_cog(StatChannel(bot)) diff --git a/credentials_test.env b/credentials_test.env index 4a597fa..28667e1 100644 --- a/credentials_test.env +++ b/credentials_test.env @@ -17,6 +17,8 @@ TWITTER_DISCORD_WEBHOOK_MAO="yo discord twitter channel here for mao server" #strinova stats voice channel STRINOVA_STAT_CHANNEL_ID="yo strinova stat channel here" STRINOVA_STAT_CHANNEL_ID_MAO="yo strinova stat channel here for mao server" +#member count voice channel +MEMBER_COUNT_CHANNEL_ID="yo member count channel here" #me (for purging and other owner only things) OWNER_ID="your discord servers owner id here"