5.1 KiB
5.1 KiB
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.sqlite3chat_history.sqlite3polychaetsi_stats.json
Команды
/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— вкл/выкл авто-ответы бота в чате./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.2–x3 (games/casino.py)./gadanie— ИИ-гадание + авто-мем черезgenerate_meme(games/fortune.py).
ИИ-модуль (AI/talk_handler.py)
Подключается к llama.cpp серверу через OpenAI-совместимый API (/v1/chat/completions). Хранит контекст 100 сообщений в SQLite.
Настройка сервера:
- Скачать модель:
wget https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF/resolve/main/qwen2.5-1.5b-instruct-q4_k_m.gguf - Запустить:
./llama-server -m model.gguf --host 0.0.0.0 --port 8080 -c 2048 - Прописать URL в
.env:LLAMA_API_URL=http://адрес:8080