|
|
||
|---|---|---|
| tests | ||
| workflows | ||
| .dockerignore | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| AGENT.md | ||
| Dockerfile | ||
| README.md | ||
| bot.py | ||
| checklist.md | ||
| comfy_client.py | ||
| config.py | ||
| db.py | ||
| docker-compose.yml | ||
| plan.md | ||
| pytest.ini | ||
| queue_manager.py | ||
| requirements-dev.txt | ||
| requirements.txt | ||
| workflows.py | ||
README.md
MpakoImageAIbot
Telegram-бот для генерации и редактирования изображений через удалённый ComfyUI API.
Что умеет
- Text-to-image: текст → изображение (Z-Image Turbo, 1024×1024).
- Image-to-image: фото + подпись → редактирование (Krea2 edit).
- Reply-to-image: ответ текстом на готовую картинку бота → редактирование этой картинки.
- Глобальная очередь с одной активной задачей на пользователя.
- Позиция в очереди и прогресс генерации через WebSocket ComfyUI.
- SQLite: запросы, статусы, seed, пути к файлам.
Требования
- Python 3.10+ (проверено на 3.13).
- ComfyUI с доступом по сети, например:
python main.py --listen 0.0.0.0 --port 8188 - Установленные кастомные ноды для текущих workflow:
Krea2ModelLoader,TextEncodeQwenImageEdit,UnetLoaderGGUF,CLIPLoaderGGUF. - Модели, указанные в
workflows/txt2img.jsonиworkflows/img2img.json.
Настройка
Copy-Item .env.example .env
Заполнить .env:
BOT_TOKEN— токен от@BotFather.TELEGRAM_PROXY— прокси для Telegram API (пусто — напрямую).COMFY_BASE_URL— напримерhttp://192.168.31.113:8188.- Остальные параметры можно оставить по умолчанию.
Прокси для Telegram
Если сервер не имеет прямого доступа к Telegram, укажи прокси V2RayA/HTTP/SOCKS5:
# Docker на Linux (V2RayA слушает на хосте)
TELEGRAM_PROXY=http://host.docker.internal:20171
# Запуск без Docker, на том же хосте
# TELEGRAM_PROXY=http://127.0.0.1:20171
Для SOCKS5 используй socks5h://host.docker.internal:20170; зависимость socksio уже включена в requirements.txt.
Запуск
py -3 -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python bot.py
Бот работает в приватных чатах. Пользователь отправляет текст или фото с подписью.
Docker
docker compose up -d --build
Каталоги ./storage и ./data монтируются как volume. Для ComfyUI на другой машине используйте её LAN-IP, а не localhost.
Workflow
workflows/txt2img.json— Z-Image Turbo:EmptySD3LatentImage → KSampler → VAEDecode → SaveImage.workflows/img2img.json— Krea2 edit:LoadImage → TextEncodeQwenImageEdit → KSamplerAdvanced → VAEDecode → SaveImage.workflows/mapping.json— ID узлов, в которые подставляются prompt, negative, seed и входное изображение.workflows/Krea2.jsonиworkflows/ZImage.json— исходные экспорты.
Если меняются workflow, обновите mapping.json. При старте бот проверяет, что все узлы и поля существуют.
Тесты
pip install -r requirements-dev.txt
pytest
Ограничения текущей версии
- Один воркер и одна активная задача на пользователя.
- Нет
/cancelи удаления задачи из очереди. - Нет автоочистки
storage/иdata/. - Прогресс в процентах зависит от WebSocket; при его недоступности используется polling без процентов.
- При рестарте задача в статусе
runningпомечаетсяfailed.