bot_tg/README.md
2026-03-17 13:29:10 +03:00

4.9 KiB
Raw Blame History

Sex Bomba TG Bot

Телеграм‑бот, который:

  • вписывает текст шрифтом Impact (белый с чёрной обводкой) в макеты (/maket);
  • делает мемы из присланных фото (/gen_mem Up:... Down:...);
  • подсказывает, сколько минут до перекура по заданному расписанию (/break);
  • показывает расписание, текущую и следующую пару (/schedule);
  • умеет базарить (/talk) с контекстом 100 сообщений;
  • авто-ответы в чате (10% шанс + триггер-слова);
  • миниигра /penis + /top_penis;
  • казино на размер (/penis_casino);
  • гадание на фене с мемом (/gadanie).

Запуск

docker compose up --build -d

Логи:

docker compose logs -f bot

Остановка:

docker compose down

Переменные окружения: задайте BOT_TOKEN в .env. Для ИИ-фич нужен LLAMA_API_URL.

Контейнер хранит состояние в ./db:

  • penis_stats.sqlite3
  • chat_history.sqlite3
  • polychaetsi_stats.json

Команды

  • /start — отвечает кратко.
  • /help — выводит подсказки и список макетов.
  • /maket <id> <текст> — вписать текст в макет. Доступные: 1 — Владимир Владимирович Путин самый лучший президент (737x414, точка 104,240).
  • /gen_mem Up:верх Down:низ — прислать с фото (подпись) или ответом на фото. Можно указывать только Up или только Down.
  • /break — показывает, сколько минут до ближайшего перекура/идёт ли перекур.
  • /schedule — показывает расписание на сегодня, текущую и следующую пару.
  • /talk <сообщение> — побазарить с ИИ (контекст 100 сообщений).
  • /penis — миниигра, 1 раз в 24 часа.
  • /top_penis — топ по длине.
  • /polychaetsi — топ по слову «получается».
  • /penis_casino <ставка> — казино на размер (макс 1 см, казино всегда в выигрыше).
  • /gadanie <тема> — ИИ-гадание на фене + авто-мем.
  • /ebalnik — вкл/выкл авто-ответы бота в чате.
  • /svodka — сводка СВО.

Макеты и шрифт

  • Шрифт impact.ttf лежит в корне.
  • Макеты в maket/, сейчас есть 1.png. Добавляйте новые, прописав их в словаре TEMPLATES в main.py.

Технологии

  • Python 3.11, aiogram 3, Pillow.
  • llama.cpp для ИИ-фич.
  • Dockerfile + docker-compose для развёртывания.

Docker Notes

  • Образ ставит tzdata, поэтому ZoneInfo("Europe/Moscow") нормально работает в контейнере.
  • В образ копируется весь проект, а runtime-данные исключены через .dockerignore.
  • Если меняешь код или картинки, достаточно пересобрать: docker compose up --build -d.

Кратко о логике

  • /maket подбирает размер текста, чтобы уместить его в область макета.
  • /gen_mem центрирует текст по ширине, масштабирует под изображение, рисует белый текст с чёрной обводкой.
  • /break считает по расписанию в config.py и показывает следующую пару.
  • Названия пар и верхняя/нижняя неделя лежат в config.py в LESSON_SCHEDULE.
  • /talk шлёт запрос к llama.cpp серверу с контекстом 100 сообщений (хранятся в SQLite).
  • /penis_casino — слоты с множителем x1.2x3 (games/casino.py).
  • /gadanie — ИИ-гадание + авто-мем через generate_meme (games/fortune.py).

ИИ-модуль (AI/talk_handler.py)

Подключается к llama.cpp серверу через OpenAI-совместимый API (/v1/chat/completions). Хранит контекст 100 сообщений в SQLite.

Настройка сервера:

  1. Скачать модель: wget https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF/resolve/main/qwen2.5-1.5b-instruct-q4_k_m.gguf
  2. Запустить: ./llama-server -m model.gguf --host 0.0.0.0 --port 8080 -c 2048
  3. Прописать URL в .env: LLAMA_API_URL=http://адрес:8080