FashnBot — это Telegram-бот, позволяющий пользователю виртуально примерить одежду. Бот получает два изображения:
- Фото модели (пользователя в полный рост)
- Фото одежды (по ссылке или загруженное изображение)
Бот отправляет оба изображения в внешний сервис fashn.ai, а затем возвращает результат пользователю.
- 📸 Принимает ваше фото в полный рост
- 👗 Принимает фото одежды (по ссылке или изображением)
- 🤖 Генерирует виртуальную примерку с помощью внешнего сервиса
- 🖼 Возвращает финальное изображение с примеркой
- Напишите
/start - Пришлите фото себя в полный рост
- Пришлите фото одежды (можно ссылкой или изображением)
- Получите результат ✨
Бот обрабатывает по одной примерке за раз. Пока одна выполняется, новая не начнётся.
fshnbot/
├── app.py # Flask-сервер, получающий webhook от Telegram
├── config.py # Конфигурация и токены
├── requirements.txt # Зависимости Python
└── bot/
├── __init__.py
├── fashn.py # Работа с API FASHN (отправка и опрос результата)
├── handlers.py # Логика Telegram-бота
└── state.py # Простое хранилище состояния пользователя
TELEGRAM_TOKEN = '...' # токен Telegram-бота
FASHN_API_KEY = '...' # API-ключ FASHN
WEBHOOK_URL_BASE = '...' # URL, где хостится Flask-приложение
WEBHOOK_URL_PATH = f"/bot/{TELEGRAM_TOKEN}"
PORT = 8080 # локальный порт Flask- Установите зависимости:
pip install -r requirements.txt- Запустите сервер:
python app.py- Если тестируете локально, пробросьте порт с помощью ngrok:
ngrok http 8080Убедитесь, что WEBHOOK_URL_BASE в config.py совпадает с адресом от ngrok.
/start: сбрасывает состояние пользователя, ждёт фото модели- Фото модели → сохраняется в памяти → ждём фото одежды
- Фото одежды (или ссылка) → вызывается
fashn.run()→fashn.poll()→ бот присылает результат - Весь процесс управляется простым стейтом (
WAITING_MODEL,WAITING_GARMENT,PROCESSING)
- Нет диалога на естественном языке — бот работает по жёсткому сценарию: фото → фото → результат
- Ограничено на одного пользователя в сессии — нет БД, всё хранится в оперативной памяти
Flask==3.0.0
pyTelegramBotAPI==4.16.0
requests==2.32.0
Проект в демонстрационных целях. Автор не несёт ответственности за результаты от стороннего API.