diff --git a/src/advanced_logger.py b/src/advanced_logger.py index 72b25dd..f4cbfd5 100755 --- a/src/advanced_logger.py +++ b/src/advanced_logger.py @@ -107,17 +107,17 @@ class AdvancedLogger: def check_previous_roles(self, member_id: int) -> Optional[Dict]: """Check if member has previous role data when rejoining""" member_log_file = f"{self.member_logs_dir}/{member_id}.json" - + if not os.path.exists(member_log_file): return None - + try: logs = [] with open(member_log_file, 'r', encoding='utf-8') as f: content = f.read().strip() if not content: return None - + # Handle legacy JSON list format if content.startswith('['): try: @@ -127,7 +127,7 @@ class AdvancedLogger: content_clean = content.strip('[]').strip() # This is getting complex, let's just try line-by-line fallback pass - + # If not a list or failed list parse, try NDJSON line-by-line if not logs: for line in content.splitlines(): @@ -139,7 +139,11 @@ class AdvancedLogger: logs.append(json.loads(line)) except json.JSONDecodeError: continue # Skip corrupt lines - + + # Guard against empty logs list after parsing + if not logs: + return None + # Find the most recent leave event leave_events = [log for log in logs if isinstance(log, dict) and log.get("event_type") == "member_leave"] if leave_events: