"""Long-term semantic memory graph."""

from __future__ import annotations

from collections import defaultdict


MEMORY_GRAPH: dict[int, dict[str, int]] = defaultdict(dict)


TOPIC_KEYWORDS = {
    "tech": ("پایتون", "ربات", "کد", "سرور", "ai"),
    "gaming": ("بازی", "گیم", "لول", "استیم"),
    "emotion": ("ناراحت", "خسته", "حال", "غم"),
    "fun": ("😂", "🤣", "ترول", "میم"),
}


def learn_topics(user_id: int, text: str) -> None:
    lowered = text.lower()

    graph = MEMORY_GRAPH[user_id]

    for topic, words in TOPIC_KEYWORDS.items():
        for word in words:
            if word in lowered:
                graph[topic] = graph.get(topic, 0) + 1


def dominant_topics(user_id: int) -> list[str]:
    graph = MEMORY_GRAPH.get(user_id, {})

    if not graph:
        return []

    ranked = sorted(graph.items(), key=lambda item: item[1], reverse=True)

    return [topic for topic, _ in ranked[:3]]


def memory_graph_context(user_id: int) -> str:
    topics = dominant_topics(user_id)

    if not topics:
        return ""

    return "موضوعات پرتکرار این کاربر: " + ", ".join(topics)
