"""
Триггер-хэндлер: реагирует на обращения к Лайле с именем персонажа.
Формат: "Лайла [что угодно] [имя или псевдоним]"
"""
from typing import Dict, List, Optional
import random

from aiogram import Router
from aiogram.types import Message

__all__ = ("router",)
router: Router = Router(name="triggers_router")


CHARACTERS: Dict[str, Dict] = {
    "эвелин": {
        "aliases": ["эвелин", "эва", "эви"],
        "answers": [
            "Эвелин умеет молчать так, что хочется говорить.",
            "Эва всегда знает больше, чем говорит. Это немного пугает.",
            "С ней рядом становится спокойно. Не знаю почему.",
            "Интересно, о чём она думает в тишине...",
            "Эвелин тихая снаружи. Но внутри — целый ураган, я уверена.",
        ],
    },
    "лео": {
        "aliases": ["лео", "лёва", "лёня"],
        "answers": [
            "Лео громкий, яркий и немного безрассудный. Мне нравится!",
            "Он смеётся первым и уходит последним. Настоящий.",
            "Лео всегда найдёт повод для праздника, даже если его нет.",
            "Кажется, он боится тишины. Поэтому и заполняет её собой.",
            "За его смехом прячется что-то очень серьёзное...",
        ],
    },
    "маркус": {
        "aliases": ["маркус", "марк"],
        "answers": [
            "Маркус говорит мало, но каждое слово весит.",
            "Он из тех, кто держит слово даже когда это неудобно.",
            "С Маркусом не поспоришь. Не потому что нельзя — просто незачем.",
            "Он смотрит так, будто видит тебя насквозь. Немного жутковато.",
            "Маркус — тот, на кого можно положиться в самый плохой день.",
        ],
    },
    "мари": {
        "aliases": ["мари", "маришка", "мариша"],
        "answers": [
            "Мари — это как утренний свет. Мягко и неожиданно тепло.",
            "Она помнит мелочи, которые другие не замечают. Это её суперсила.",
            "С Мари любой разговор становится важным.",
            "Она улыбается даже когда грустно. Не притворяется — просто верит.",
            "Мари умеет прощать. Это редкость.",
        ],
    },
    "либе": {
        "aliases": ["либе", "либ"],
        "answers": [
            "Либе... имя звучит как песня на незнакомом языке.",
            "Она всегда чуть в стороне, но именно к ней тянутся люди.",
            "Либе видит красоту там, где другие видят хаос.",
            "Она не объясняет себя. И не должна.",
            "С Либе можно молчать — и это не будет неловко.",
        ],
    },
    "мотциэль": {
        "aliases": ["мотциэль", "мотц", "моц"],
        "answers": [
            "Мотциэль... даже имя звучит как заклинание.",
            "Он существует между мирами. Буквально.",
            "Спрашивать его о прошлом — плохая идея. Очень плохая.",
            "Мотциэль помнит вещи, которых не было. Или были?",
            "Его глаза смотрят в разные эпохи одновременно.",
        ],
    },
    "виктор": {
        "aliases": ["виктор", "вик", "витя"],
        "answers": [
            "Виктор всегда побеждает. Это в имени.",
            "Он не злой. Просто у него другая шкала ценностей.",
            "Виктор говорит правду даже когда это больно. Особенно когда больно.",
            "Не стоит играть с ним в слова — проиграешь.",
            "За его холодностью — старая-старая усталость.",
        ],
    },
    "кситти": {
        "aliases": ["кситти", "кси", "ксит"],
        "answers": [
            "Кситти — маленький хаос в красивой упаковке.",
            "Она никогда не делает то, что от неё ожидают. Никогда.",
            "С Кситти скучно не бывает. Опасно — бывает. Скучно — нет.",
            "Она собирает странные вещи и странных людей.",
            "Кситти смеётся над правилами. Потому что сама их придумывает.",
        ],
    },
    "кадфаль": {
        "aliases": ["кадфаль", "кад", "кадф"],
        "answers": [
            "Кадфаль несёт что-то древнее в каждом шаге.",
            "Он не торопится. У него другое ощущение времени.",
            "Кадфаль знает цену словам — поэтому тратит их редко.",
            "В его присутствии хочется стоять прямо.",
            "Он видел многое. Слишком многое для одной жизни.",
        ],
    },
    "вайш": {
        "aliases": ["вайш", "вай"],
        "answers": [
            "Вайш появляется неожиданно и исчезает так же.",
            "Её след — это вопросы без ответов.",
            "Вайш знает что-то, что тебе лучше не знать.",
            "Она не объясняет своих решений. Просто делает.",
            "С Вайш никогда не знаешь, друг она или нет.",
        ],
    },
    "скаф": {
        "aliases": ["скаф"],
        "answers": [
            "Скаф — имя, которое не забывается.",
            "Он работает в тени. Не потому что боится света — просто так удобнее.",
            "Скаф знает цену всему. Буквально всему.",
            "Его нельзя купить. Его можно только нанять. Это разница.",
            "Те, кто встречал Скафа, редко рассказывают об этом дважды.",
        ],
    },
    "куарти": {
        "aliases": ["куарти", "куар"],
        "answers": [
            "Куарти — четыре буквы и миллион вопросов.",
            "Он улыбается, когда другие нервничают. Это не успокаивает.",
            "Куарти коллекционирует долги. Чужие.",
            "Говорят, он никогда не проигрывает. Говорят.",
            "Куарти появляется именно тогда, когда тебе нужна помощь. И это не случайно.",
        ],
    },
    "саэрин": {
        "aliases": ["саэрин", "саэ", "сэрин"],
        "answers": [
            "Саэрин — как туман. Красиво и немного опасно.",
            "Она говорит загадками не потому что хочет запутать — просто иначе не умеет.",
            "Саэрин помнит всё, что ей говорят. Всё.",
            "Её спокойствие пугает больше, чем чужой гнев.",
            "Саэрин выбирает слова как оружие — точно и без лишнего.",
        ],
    },
    "котики": {
        "aliases": ["котики", "котик", "кот", "кошка"],
        "answers": [
            "Котики — это лучшее, что есть в этом мире. Без обсуждений.",
            "Котик сел на тебя — ты избран.",
            "Кот смотрит на тебя и думает что-то важное. Наверное.",
            "Котики всегда правы. Это научный факт.",
            "Маленький тёплый комочек счастья. Что ещё нужно?",
        ],
    },
    "нотик": {
        "aliases": ["нотик", "нота", "нотка"],
        "answers": [
            "Нотик! Звучит как маленькая музыкальная нота! 🎵",
            "Нотик — тот, кто приносит мелодию туда, где её не хватает.",
            "Маленький, но важный. Как все хорошие вещи.",
            "Нотик — это и ласково, и загадочно одновременно.",
            "Из таких маленьких нотиков складываются большие истории.",
        ],
    },
    "илья": {
        "aliases": ["илья", "илюха", "илюша"],
        "answers": [
            "Илья — имя с характером. Твёрдое и живое.",
            "Илья всегда знает что делать. Или уверенно делает вид.",
            "С Ильёй легко — он не усложняет лишнего.",
            "Он из тех, кто сделает, а потом расскажет. Не наоборот.",
            "Илья редко жалуется. Чаще просто решает.",
        ],
    },
    "ина": {
        "aliases": ["ина", "инка", "инуля"],
        "answers": [
            "Ина — короткое имя, за которым много всего.",
            "Она тихая, но запоминается.",
            "Ина умеет слушать так, что хочется говорить.",
            "В ней есть что-то очень своё, неповторимое.",
            "Ина — как маленький огонёк. Незаметный, но греет.",
        ],
    },
    "абсцисс": {
        "aliases": ["абсцисс", "абс"],
        "answers": [
            "Абсцисс! Это математика или имя? Хи-хи!",
            "Ось абсцисс — горизонталь жизни. Всё движется по ней.",
            "Абсцисс звучит как заклинание из учебника.",
            "Кто-то мечтает о приключениях, а кто-то — об осях координат!",
            "Абсцисс и ордината. Звучит как имена двух загадочных персонажей!",
        ],
    },
}

# Имена, на которые Лайла откликается
LAYLA_NAMES = ["лайла", "лайл", "лая"]


def find_character_answer(text: str) -> Optional[str]:
    """
    Проверяет:
    1. Есть ли в тексте обращение к Лайле
    2. Есть ли имя персонажа

    Возвращает случайный ответ или None.
    """
    text_lower = text.lower()

    # Проверяем обращение к Лайле
    if not any(name in text_lower for name in LAYLA_NAMES):
        return None

    # Ищем персонажа
    for character, data in CHARACTERS.items():
        for alias in data["aliases"]:
            if alias in text_lower:
                return random.choice(data["answers"])

    return None


@router.message()
async def handle_triggers(message: Message) -> None:
    """
    Реагирует только если:
    - Сообщение от живого человека
    - В тексте есть обращение к Лайле
    - В тексте есть имя персонажа

    На всё остальное — молчит.
    """
    #if not message.text or not message.from_user or message.from_user.is_bot:
        #return

    #response = find_character_answer(message.text)

    #if response:
        #await message.reply(response)
    return
