# ВСЕ КОНСТАНТНЫЕ ЗНАЧЕНИЯ

import os
from pathlib import Path
from datetime import timedelta, time

def make_time(h: int, m: int) -> time:
    return time(hour=h, minute=m)

# Базовые пути
BASE_DIR = Path(__file__).resolve().parent
FONT_PATH = BASE_DIR / "impact.ttf"
DEFAULT_TZ = os.getenv("TZ", "Europe/Moscow")

# Состояние мини-игры
PENIS_STATE: dict[int, dict[str, object]] = {}
PENIS_START_LENGTH = 10.0
PENIS_MIN_DELTA = 0.1
PENIS_MAX_DELTA = 7.0
PENIS_COOLDOWN = timedelta(hours=24)
PENIS_TOP_LIMIT = 10

# Твои шаблоны и тот самый огромный кортеж
TEMPLATES = {
    "1": {
        "path": BASE_DIR / "maket" / "1.png",
        "anchor": (104, 240),
        "padding": 20,
        "label": "Владимир Владимирович Путин самый лучший президент",
    },
    # Сюда вставь весь остальной огромный массив
}

SCHEDULE: dict[int, list[tuple[time, time, int | None]]] = {
    0: [  # Monday
        (make_time(9, 50), make_time(10, 35), 5),
        (make_time(10, 40), make_time(11, 25), 30),
        (make_time(11, 55), make_time(12, 40), 5),
        (make_time(12, 45), make_time(13, 30), 15),
        (make_time(13, 45), make_time(14, 30), 5),
        (make_time(14, 35), make_time(15, 20), 30),
        (make_time(15, 50), make_time(16, 35), 5),
        (make_time(16, 40), make_time(17, 25), None),
    ],
    1: [  # Tuesday
        (make_time(9, 50), make_time(10, 35), 5),
        (make_time(10, 40), make_time(11, 25), 30),
        (make_time(11, 55), make_time(12, 40), 5),
        (make_time(12, 45), make_time(13, 30), 15),
        (make_time(13, 45), make_time(14, 30), 5),
        (make_time(14, 35), make_time(15, 20), None),
    ],
    2: [],  # Wednesday — кайфуем дома
    3: [  # Thursday
        (make_time(8, 0), make_time(8, 45), 5),
        (make_time(8, 50), make_time(9, 35), 15),
        (make_time(9, 50), make_time(10, 35), 5),
        (make_time(10, 40), make_time(11, 25), 30),
        (make_time(11, 55), make_time(12, 40), 5),
        (make_time(12, 45), make_time(13, 30), 15),
        (make_time(13, 45), make_time(14, 30), 5),
        (make_time(14, 35), make_time(15, 20), 30),
        (make_time(15, 50), make_time(16, 35), 5),
        (make_time(16, 40), make_time(17, 25), None),
    ],
    4: [  # Friday
        (make_time(9, 50), make_time(10, 35), 5),
        (make_time(10, 40), make_time(11, 25), 30),
        (make_time(11, 55), make_time(12, 40), 5),
        (make_time(12, 45), make_time(13, 30), 15),
        (make_time(13, 45), make_time(14, 30), 5),
        (make_time(14, 35), make_time(15, 20), None),
    ],
    5: [],  # Saturday — выходной
    6: [],  # Sunday — выходной
}

# Ключевые слова, на которые бот кидает трек Creep.
KEYWORDS = {'крип', 'радиохэд', 'creep', 'radiohead'}


def templates_list_text() -> str:
    parts = []
    for tid in sorted(TEMPLATES.keys()):
        label = TEMPLATES[tid].get("label", "")
        if label:
            parts.append(f"{tid} — {label}")
        else:
            parts.append(tid)
    return ", ".join(parts) if parts else "нет макетов"


HINT_TEXT = (
    # Общая подсказка по командам.
    "Команды:\n"
    f"• /maket «id» «текст» — доступные: {templates_list_text()} (1: 737x414, точка 104,240).\n"
    "• /gen_mem Up:верх Down:низ — отправь с фото (как подпись) или ответом на фото.\n"
    "• /break — узнать, сколько минут до перекура.\n"
    "• /penis — миниигра: +/− от 0.1 до 7 см, раз в 24 часа.\n"
    "• /top_penis — динамический топ по текущей длине.\n"
    "• /talk [сообщение] — побазарить с ИИ на фене.\n"
    "• /prices — старый способ цен.\n"
    "• /fetch — свежие цены с x-server.\n"
    "Подсказка: в группах команда должна быть слитно с ботом (/gen_mem@username)."
)
