forked from zovos/bot_tg
103 lines
4.1 KiB
Python
103 lines
4.1 KiB
Python
import os
|
||
from pathlib import Path
|
||
from datetime import timedelta, time
|
||
from zoneinfo import ZoneInfo
|
||
|
||
# --- Базовые пути ---
|
||
BASE_DIR = Path(__file__).parent
|
||
FONT_PATH = BASE_DIR / "impact.ttf"
|
||
DEFAULT_TZ = os.getenv("TZ", "Europe/Moscow")
|
||
|
||
# --- Настройки /penis ---
|
||
PENIS_DB_PATH = "/db/penis_stats.sqlite3"
|
||
CHAT_HISTORY_DB_PATH = "/db/chat_history.sqlite3"
|
||
PENIS_START_LENGTH = 10.0
|
||
PENIS_MIN_DELTA = 0.1
|
||
PENIS_MAX_DELTA = 7.0
|
||
PENIS_COOLDOWN = timedelta(hours=24)
|
||
PENIS_COOLDOWN_SECONDS = int(PENIS_COOLDOWN.total_seconds())
|
||
PENIS_TOP_LIMIT = 10
|
||
|
||
# --- Конфигурация макетов ---
|
||
TEMPLATES = {
|
||
"1": {
|
||
"path": BASE_DIR / "maket" / "1.png",
|
||
"anchor": (104, 240),
|
||
"padding": 20,
|
||
"label": "Владимир Владимирович Путин самый лучший президент",
|
||
},
|
||
"2": {
|
||
"path": BASE_DIR / "maket" / "2.png",
|
||
"anchor": (40, 40),
|
||
"box_size": (582, 346),
|
||
"label": "Макет 2",
|
||
},
|
||
}
|
||
|
||
# --- Расписание ---
|
||
def make_time(h: int, m: int) -> time:
|
||
return time(hour=h, minute=m)
|
||
|
||
SCHEDULE = {
|
||
0: [ # Понедельник
|
||
(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: [ # Вторник
|
||
(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: [], # Среда
|
||
3: [ # Четверг
|
||
(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: [ # Пятница
|
||
(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),
|
||
],
|
||
}
|
||
|
||
# --- Остальное ---
|
||
KEYWORDS = {'крип', 'радиохэд', 'creep', 'radiohead'}
|
||
|
||
# --- Авто-ответы ИИ ---
|
||
AUTOREPLY_CHANCE = 0.10
|
||
AUTOREPLY_COOLDOWN = 120
|
||
AUTOREPLY_TRIGGERS = {'бот', 'фраер', 'кент', 'братуха', 'пацаны', 'чё как', 'базар', 'ебать', 'пизда', 'хуй', 'бля', 'сука', 'говно', 'пидор', 'пиздабол', 'пиздатый', 'пиздатая', 'пиздатое', 'пиздатые', 'пиздато', 'пиздато', 'пиздато', 'пиздато', 'ваномас'}
|
||
|
||
def get_hint_text(templates_str: str) -> str:
|
||
return (
|
||
"Команды:\n"
|
||
f"• /maket «id» «текст» — доступные: {templates_str}.\n"
|
||
"• /gen_mem Up:верх Down:низ — отправь с фото.\n"
|
||
"• /break — узнать время до перекура.\n"
|
||
"• /penis — миниигра 1 раз в 24 часа.\n"
|
||
"• /top_penis — топ по длине.\n"
|
||
"• /talk [текст] — ИИ базарит на фене.\n"
|
||
"• /ebalnik — включить/выключить автоответы в чате.\n"
|
||
"• /prices /fetch — цены.\n"
|
||
"Подсказка: в группах пиши /команда@username_бота."
|
||
)
|