"""Lightweight personality memory system."""

from __future__ import annotations

from collections import defaultdict

from bot.services.emotion import detect_emotion


USER_MEMORY: dict[int, dict] = defaultdict(dict)


def remember_user(user_id: int, name: str | None, text: str) -> None:
    memory = USER_MEMORY[user_id]

    if name:
        memory["name"] = name

    memory["last_message"] = text[:300]

    memory["emotion"] = detect_emotion(text)

    lowered = text.lower()

    if any(word in lowered for word in ("😂", "🤣", "شوخی", "باحال")):
        memory["tone"] = "playful"

    elif any(word in lowered for word in ("ناراحت", "غم", "خسته", "اعصاب")):
        memory["tone"] = "emotional"

    elif any(word in lowered for word in ("کد", "پایتون", "ربات", "برنامه")):
        memory["interest"] = "tech"


def build_personality_context(user_id: int) -> str:
    memory = USER_MEMORY.get(user_id)

    if not memory:
        return ""

    lines = ["اطلاعاتی که از این کاربر یادت میاد:"]

    if memory.get("name"):
        lines.append(f"- اسم: {memory['name']}")

    if memory.get("tone"):
        lines.append(f"- لحن معمول: {memory['tone']}")

    if memory.get("emotion"):
        lines.append(f"- احساس فعلی: {memory['emotion']}")

    if memory.get("interest"):
        lines.append(f"- علاقه: {memory['interest']}")

    if memory.get("last_message"):
        lines.append(f"- آخرین حرف: {memory['last_message']}")

    return "\n".join(lines)
