# pfp_context.py """ Helper module for detecting when users ask about the profile picture and injecting the description into context. """ import re from typing import Optional # Regex patterns to detect profile picture questions PFP_PATTERNS = [ # Direct profile picture references r'\b(?:your\s+)?(?:profile\s+)?(?:pic|picture|photo|image|avatar|pfp)\b', # "What are you wearing" type questions r'\bwhat\s+(?:are\s+)?you\s+wearing\b', r'\bwhat\s+(?:is|are)\s+you\s+(?:dressed|wearing)\b', r'\btell\s+me\s+about\s+(?:your\s+)?(?:outfit|clothes|dress|appearance)\b', # "How do you look" type questions r'\bhow\s+(?:do\s+)?you\s+look\b', r'\bwhat\s+(?:do\s+)?you\s+look\s+like\b', r'\bdescribe\s+(?:your\s+)?(?:appearance|look|outfit)\b', # "Nice pfp/picture" type comments r'\b(?:nice|cool|cute|beautiful|pretty|lovely|amazing|great)\s+(?:pfp|picture|pic|avatar|photo)\b', r'\b(?:i\s+)?(?:like|love)\s+(?:your\s+)?(?:pfp|picture|pic|avatar|photo)\b', # Direct appearance questions r'\bwhat\s+(?:are\s+)?you\s+(?:dressed\s+)?(?:as|in)\b', r'\b(?:show|showing)\s+me\s+(?:your\s+)?(?:outfit|appearance)\b', # Icon/display picture references r'\b(?:your\s+)?(?:display\s+)?(?:icon|display\s+picture)\b', # "In your picture" references r'\bin\s+(?:your\s+)?(?:picture|photo|pic|pfp|avatar)\b', r'\bon\s+(?:your\s+)?(?:picture|photo|pic|pfp|avatar)\b', ] # Compile patterns for efficiency COMPILED_PATTERNS = [re.compile(pattern, re.IGNORECASE) for pattern in PFP_PATTERNS] def is_asking_about_pfp(message: str) -> bool: """ Check if the user's message is asking about or referencing the profile picture. Args: message: User's message text Returns: True if message appears to be about the pfp """ if not message: return False # Check against all patterns for pattern in COMPILED_PATTERNS: if pattern.search(message): return True return False def get_pfp_context_addition() -> Optional[str]: """ Get the profile picture description formatted for context injection. Returns: Formatted context string or None """ from utils.profile_picture_manager import profile_picture_manager description = profile_picture_manager.get_current_description() if description: return f"\n\n📸 YOUR CURRENT PROFILE PICTURE:\n{description}\n(This is what you look like in your current Discord profile picture. When users ask about your appearance, picture, or outfit, refer to this description.)" return None