1
0
Fork 0
forked from zovos/bot_tg
bot_tg/README.md

5.7 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);
  • ставки на матчи CS2, Dota 2, футбол с реальными коэффициентами (/matches, /bet).

Запуск

docker compose up --build -d

Логи:

docker compose logs -f bot

Остановка:

docker compose down

Переменные окружения: задайте BOT_TOKEN в .env. Для ИИ-фич нужен LLAMA_API_URL. Для ставок нужен ODDS_API_KEY (бесплатно на https://the-odds-api.com).

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

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

Команды

  • /start — отвечает кратко.
  • /help — выводит подсказки и список макетов.
  • /maket <id> <текст> — вписать текст в макет. Доступные: 1 — Владимир Владимирович Путин самый лучший президент (737x414, точка 104,240).
  • /gen_mem Up:верх Down:низ — прислать с фото (подпись) или ответом на фото. Можно указывать только Up или только Down.
  • /break — показывает, сколько минут до ближайшего перекура/идёт ли перекур.
  • /schedule [пн|mon] — показывает расписание на ближайший указанный день недели; без аргумента показывает сегодня, текущую и следующую пару.
  • /talk <сообщение> — побазарить с ИИ (контекст 100 сообщений).
  • /penis — миниигра, 1 раз в 24 часа.
  • /top_penis — топ по длине.
  • /polychaetsi — топ по слову «получается».
  • /penis_casino <ставка> — казино на размер (макс 1 см, казино всегда в выигрыше).
  • /gadanie <тема> — ИИ-гадание на фене + авто-мем.
  • /ebalnik — вкл/выкл авто-ответы бота в чате.
  • /matches [cs|dota|football] — ближайшие матчи с коэффициентами.
  • /bet <спорт> <номер> <команда> <ставка> — поставить см на матч.
  • /mybets — мои активные ставки.
  • /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).
  • /matches + /bet — ставки на реальные матчи, коэффициенты через The-Odds-API (games/betting.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