2.6 KiB
2.6 KiB
План проекта
Telegram-бот для генерации изображений через удалённый ComfyUI API.
Стек
- Python 3.10+
- python-telegram-bot 21+ (async)
- SQLite (aiosqlite)
- httpx для вызова ComfyUI API
- Docker для упаковки
Режимы
- Text-to-Image: пользователь отправляет текст, бот подставляет промпт в workflow и отправляет его в ComfyUI через
/prompt. - Image-to-Image: пользователь отправляет фото и подпись, бот загружает изображение в ComfyUI через
/upload/image, подставляет его в workflow и отправляет запрос.
Очередь
- Один пользователь — одна активная задача. Повторный запрос во время ожидания получает ответ «ты уже в очереди».
- Глобальная очередь с отображением позиции: «Перед тобой X человек».
- Во время генерации показывается прогресс из WebSocket ComfyUI (событие
progress).
Хранение
SQLite, таблица requests:
id— первичный ключ;user_id— Telegram ID;timestamp— время создания в ISO;prompt_text— текст запроса;input_file_path— входное изображение, может быть пустым;output_file_path— результат, может быть пустым;status—queued,running,doneилиfailed;comfy_prompt_id— идентификатор задачи в ComfyUI.
Входные файлы и результаты хранятся в ./storage/{user_id}/, в БД записываются только пути.
ComfyUI
- Базовый адрес:
http://IP_WINDOWS:PORT. POST /promptвозвращаетprompt_id.- Статус отслеживается через
GET /history/{prompt_id}или WebSocket/wsдля прогресса в реальном времени. - Готовое изображение скачивается через
/view?filename=....
Структура проекта
bot.py— хендлеры текста и фото.comfy_client.py—submit_workflowиget_result.db.py—init_db()и CRUD дляrequests.queue_manager.py— очередь наasyncio.Queue.requirements.txt,Dockerfile— зависимости и сборка.