forked from zovos/bot_tg
105 lines
4.2 KiB
Python
105 lines
4.2 KiB
Python
# ВСЕ КОНСТАНТНЫЕ ЗНАЧЕНИЯ
|
||
|
||
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)."
|
||
)
|