# ВСЕ КОНСТАНТНЫЕ ЗНАЧЕНИЯ 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)." )