forked from zovos/bot_tg
52 lines
3.1 KiB
Markdown
52 lines
3.1 KiB
Markdown
# Sex Bomba TG Bot
|
||
|
||
Телеграм‑бот, который:
|
||
- вписывает текст шрифтом Impact (белый с чёрной обводкой) в макеты (`/maket`);
|
||
- делает мемы из присланных фото (`/gen_mem Up:... Down:...`);
|
||
- подсказывает, сколько минут до перекура по заданному расписанию (`/break`);
|
||
- умеет базарить (`/talk`).
|
||
|
||
## Запуск
|
||
|
||
```bash
|
||
docker-compose up --build
|
||
```
|
||
|
||
Переменные окружения: задайте `BOT_TOKEN` в `.env` (уже добавлен шаблон);
|
||
`LLAMA_API_URL` — адрес llama.cpp сервера (для `/talk`)
|
||
|
||
## Команды
|
||
|
||
- `/start` — отвечает кратко.
|
||
- `/help` — выводит подсказки и список макетов.
|
||
- `/maket <id> <текст>` — вписать текст в макет. Доступные: `1 — Владимир Владимирович Путин самый лучший президент` (737x414, точка 104,240).
|
||
- `/gen_mem Up:верх Down:низ` — прислать с фото (подпись) или ответом на фото. Можно указывать только Up или только Down.
|
||
- `/break` — показывает, сколько минут до ближайшего перекура/идёт ли перекур.
|
||
- `/talk <сообщение>` — побазарить с ИИ. Работает через llama.cpp сервер.
|
||
|
||
## Макеты и шрифт
|
||
|
||
- Шрифт `impact.ttf` лежит в корне.
|
||
- Макеты в `maket/`, сейчас есть `1.png`. Добавляйте новые, прописав их в словаре `TEMPLATES` в `main.py`.
|
||
|
||
## Технологии
|
||
|
||
- Python 3.11, aiogram 3, Pillow.
|
||
- llama.cpp для ИИ-фич.
|
||
- Dockerfile + docker-compose для развёртывания.
|
||
|
||
## Кратко о логике
|
||
|
||
- `/maket` подбирает размер текста, чтобы уместить его в область макета.
|
||
- `/gen_mem` центрирует текст по ширине, масштабирует под изображение, рисует белый текст с чёрной обводкой.
|
||
- `/break` считает по расписанию в `main.py` (словарь `SCHEDULE`).
|
||
- `/talk` шлёт запрос к llama.cpp серверу (`LLAMA_API_URL`), системный промпт задаёт стиль фени(Можно изменить).
|
||
|
||
## ИИ-модуль (`AI/talk_handler.py`)
|
||
|
||
Отдельный модуль, не трогает основной код. Подключается к llama.cpp серверу через OpenAI-совместимый API (`/v1/chat/completions`).
|
||
|
||
Настройка сервера:
|
||
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`
|