From f3d8578759d2fea9e481696b7a29e2d2a1c30cc9 Mon Sep 17 00:00:00 2001 From: salmonik Date: Thu, 19 Mar 2026 22:03:03 +0100 Subject: normalised times on vclogs, and improved jarvis via reply chaining --- cogs/vclogs.py | 83 +++++++++++++++++++++++++--------------------------------- 1 file changed, 36 insertions(+), 47 deletions(-) (limited to 'cogs/vclogs.py') diff --git a/cogs/vclogs.py b/cogs/vclogs.py index 0589364..f2efca7 100644 --- a/cogs/vclogs.py +++ b/cogs/vclogs.py @@ -54,36 +54,20 @@ class VcLogs(commands.Cog): settings_file = 'settings.json' @staticmethod - async def handle_state_change(member, channel, state_type, is_enabled, current_time, log_channel, activity_suffix=None): + async def handle_state_change(member, channel, state_type, is_enabled, log_channel): """Helper method to handle voice state changes""" state_messages = { 'deaf': { - True: ( - f"[{current_time}] {member.name} ogłuchnął się na {channel.name}", - f"{member.display_name} jest bity przez ojca" - ), - False: ( - f"[{current_time}] {member.name} odgłuchał się na {channel.name}", - f"{member.display_name} uciek od ojca" - ) + True: f"{member.display_name} jest bity przez ojca", + False: f"{member.display_name} uciek od ojca" }, 'mute': { - True: ( - f"[{current_time}] {member.name} wyciszył się na {channel.name}", - f"{member.display_name} idzie robić jajecznice" - ), - False: ( - f"[{current_time}] {member.name} odciszył się na {channel.name}", - f"{member.display_name} zrobił jajecznice" - ) + True: f"{member.display_name} idzie robić jajecznice", + False: f"{member.display_name} zrobił jajecznice" } } - message, tts_text = state_messages[state_type][is_enabled] - if activity_suffix: - message = f"{message}\n{activity_suffix}" - await log_channel.send(message) - logger.info(f"Voice state change: {message}") + tts_text = state_messages[state_type][is_enabled] return tts_text, channel async def play_tts(self, channel, text): @@ -96,14 +80,15 @@ class VcLogs(commands.Cog): logger.info("saving file") tts.save(tts_file) + voice_client = await voice_mgr.get_voice_client(channel.guild) + volume = 1.0 + if os.path.exists(VcLogs.settings_file): async with aiofiles.open(VcLogs.settings_file) as f: content = await f.read() data = json.loads(content) volume = data.get('volume', 1.0) - voice_client = await voice_mgr.get_voice_client(channel.guild) - if voice_client is None: voice_client = await voice_mgr.join_channel(channel) @@ -180,7 +165,7 @@ class VcLogs(commands.Cog): message = ( f"[{current_time}] {member.name} rozłączył się z {before.channel.name}\n" - f" Aktywny: {active_str} | AFK: {afk_str}" + f"Aktywny: {active_str} | AFK: {afk_str}" ) tts_text = f"{member.display_name} jest chujem" tts_channel = before.channel @@ -206,7 +191,20 @@ class VcLogs(commands.Cog): data['is_afk'] = False data['active_start'] = current_ts save_activity_data(activity_data) + + afk_str = format_duration(afk_duration) + + if after.self_mute: + activity = "odciszył" + else: + activity = "odgłuchnął" + + message = ( f"[{current_time}] {member.name} {activity} się na {after.channel.name}\n" + f"AFK: {afk_str}" ) + await log_channel.send(message) + logger.info(f"User returned from AFK: {message}") elif not data.get('is_afk') and (after.self_mute or after.self_deaf): + active_since_start = 0 if data.get('active_start'): active_since_start = current_ts - data['active_start'] data['total_active'] += active_since_start @@ -214,38 +212,29 @@ class VcLogs(commands.Cog): data['is_afk'] = True data['active_start'] = None save_activity_data(activity_data) + + if after.self_mute: + activity = "wyciszył" + else: + activity = "ogłuchnął" + + active_str = format_duration(active_since_start) + message = ( f"[{current_time}] {member.name} {activity} się na {after.channel.name}\n" + f"Aktywny: {active_str}" ) + await log_channel.send(message) + logger.info(f"User went AFK: {message}") if before.self_deaf != after.self_deaf: - activity_suffix = None - if user_id in activity_data: - data = activity_data[user_id] - if after.self_deaf: - active_str = format_duration(data['total_active']) - activity_suffix = f" Aktywny przed AFK: {active_str}" - else: - active_str = format_duration(data['total_active']) - afk_str = format_duration(data['total_afk']) - activity_suffix = f" Był AFK: {afk_str} | Łączny aktywny: {active_str}" tts_text, tts_channel = await self.handle_state_change( - member, after.channel, 'deaf', after.self_deaf, current_time, log_channel, activity_suffix + member, after.channel, 'deaf', after.self_deaf, log_channel ) if tts_text and tts_channel: await self.play_tts(tts_channel, tts_text) return if before.self_mute != after.self_mute: - activity_suffix = None - if user_id in activity_data: - data = activity_data[user_id] - if after.self_mute: - active_str = format_duration(data['total_active']) - activity_suffix = f" Aktywny przed AFK: {active_str}" - else: - active_str = format_duration(data['total_active']) - afk_str = format_duration(data['total_afk']) - activity_suffix = f" Był AFK: {afk_str} | Łączny aktywny: {active_str}" tts_text, tts_channel = await self.handle_state_change( - member, after.channel, 'mute', after.self_mute, current_time, log_channel, activity_suffix + member, after.channel, 'mute', after.self_mute, log_channel ) if tts_text and tts_channel: -- cgit v1.2.3