У большинства из нас дома хранятся старые фотографии родственников - потрёпанные, с заломами, потёртостями и выцветшими красками. А в интернете уже несколько лет живёт тренд: такие фотографии "оживляют" - превращают в короткие видео, где лица начинают двигаться и улыбаться.
В этой статье соберём чат-бота в Telegram, который умеет три вещи: улучшать фотографии, реставрировать старые снимки и оживлять их в виде коротких видео. Собирать будем в конструкторе Watbot, а за нейросетевую обработку будет отвечать сервис Replicate. Бонусом бот сразу умеет принимать оплату от пользователей.
Подключение мессенджера
Прежде всего боту нужен мессенджер. Для этого создайте бота в официальном Telegram-боте BotFather: нажмите New Bot, укажите имя бота, а затем - техническое доменное имя, которое обязательно должно заканчиваться на "bot". В ответ BotFather выдаст токен.
Возвращаемся в конструктор Watbot, переходим в раздел "Ссылки на чат-бота", нажимаем "Подключить мессенджер", выбираем Telegram и вставляем полученный токен. После сохранения бот подключён к платформе.
Шаг 1. Глобальные переменные
Дальше нужно настроить набор глобальных переменных в разделе меню слева "Списки" → "Глобальные переменные" - через них бот будет получать все необходимые данные для работы:
- Бот-токен - тот самый токен из BotFather
- Ссылка на канал с примерами работ - можно указать свой канал, чтобы пользователи видели примеры результатов
- Документы - ссылка на политику обработки персональных данных и другие обязательные документы
- Цена обработки, цена оживления, цена восстановления - стоимость каждой услуги отдельной цифрой
- Replicate API Token - сторонний сервис ИИ Replicate
- Wb Token
Разберём отдельно, откуда взять два последних токена - они самые важные.
Шаг 2. Получение токена Replicate
Replicate - это сервис, через который бот обращается к нейросетям для обработки, реставрации и оживления фотографий. Регистрируемся на replicate.com через GitHub, затем в разделе API tokens - Billing привязываем банковскую карту и пополняем баланс хотя бы на один доллар - без этого API-ключи работать не будут.
После этого переходим в раздел API tokens, вводим любое понятное только вам название ключа и нажимаем Create Token. Полученный токен копируем и вставляем в глобальную переменную Replicate API Token в конструкторе.
Шаг 3. WB Token
Это токен самой платформы Watbot. Он находится в настройках профиля, в разделе API - там нужно один раз сгенерировать ключ, скопировать его и вставить в соответствующую глобальную переменную. После сохранения всех переменных бот готов к работе с логикой сценариев.
Как устроен бот: главный сценарий
Внутри у бота четыре сценария: главное меню, обработка фото, восстановление фото и оживление фото.
При первом запуске пользователь попадает в главный сценарий и видит приветствие с просьбой согласиться с условиями использования (ссылка на документы берётся из соответствующей глобальной переменной). Дальше - развилка:
- если пользователь уже дал согласие ранее (у контакта стоит тег), бот сразу отправляет его в главное меню;
- если согласия ещё нет, бот показывает документы и предлагает два варианта - "Согласен" и "Отказываюсь";
- при отказе бот отвечает "Возвращайтесь, когда передумаете", а при согласии - ставит контакту тег (чтобы не спрашивать повторно) и отправляет в главное меню.
Из главного меню пользователь выбирает одну из трёх услуг: обработать фото, восстановить фото или оживить фото.
Шаг 4. Сценарий "Обработка фото"
Логика во всех трёх сценариях устроена по одному и тому же принципу, поэтому разберём его подробно на примере обработки, а дальше - только различия.
- Пользователь нажимает "Обработать фото" и видит сообщение с описанием услуги, а также кнопки "Оплатить" и "В главное меню".
- При нажатии "Оплатить" значение из глобальной переменной "цена обработки" записывается в локальную переменную, которая используется в блоке оплаты.
- В блоке оплаты активируется функция считывания суммы из этой локальной переменной, пользователь вводит номер телефона (это требование платёжной системы), и ему генерируется ссылка на оплату.
- После успешной оплаты бот просит отправить фото, которое нужно обработать. Фото сохраняется в переменную.
- Дальше идёт HTTP-запрос к методу Decode Short Link API Watbot - он декодирует короткую ссылку на фото в прямую ссылку, пригодную для передачи в Telegram. Код ответа записывается в переменную, чтобы проверить, прошёл ли запрос успешно.
- Если код ответа равен 200 - запрос успешен, и бот отправляет ещё один HTTP-запрос, уже к Replicate, с моделью Flux Context Max. Тайм-аут запроса выставлен на максимум (60 секунд), так как обработка фотографии может занимать время. Ответ сервиса записывается в переменную output.
- Если код ответа равен 201 - обработка прошла успешно, и бот отправляет пользователю в Telegram фото "до" и "после" через метод Send Media Group.
- Если по какой-то причине отправить медиагруппу не удалось, бот присылает две прямые ссылки на результат - их можно открыть и скачать вручную.
- В конце пользователю предлагается сгенерировать ещё раз или вернуться в главное меню.
Для удобства тестирования в сценарий можно добавить обходной путь: если пользователь вместо оплаты пишет слово "тест", бот пропускает его сразу к блоку успешной оплаты - это удобно, пока вы настраиваете и проверяете логику, а перед запуском в продакшн эту связь стоит убрать.
Шаг 5. Сценарий "Восстановление фото"
Собран по такому же принципу, что и обработка: оплата, отправка фото, декодирование ссылки, запрос к Replicate, отправка результата "до/после". Отличие только в двух вещах - тексте сообщений и промте, который отправляется нейросети: здесь он нацелен именно на восстановление повреждённых старых снимков, а не на общее улучшение качества.
Шаг 6. Сценарий "Оживить фото"
Этот сценарий немного сложнее:
- После оплаты бот просит отправить фото, которое нужно оживить.
- Затем бот просит пользователя описать, что должно происходить на видео (например, "улыбается").
- Введённый текст дополнительно обрабатывается, чтобы привести его к формату, который ожидает API нейросети - так бот подстраховывается от некорректного ввода.
- Дальше бот уточняет формат итогового видео: квадратное, вертикальное или горизонтальное.
- Пользователю показывается сообщение о том, что идёт генерация и она займёт не больше 60 секунд, после чего предыдущие служебные сообщения удаляются - для этого от текущего message ID отнимается 1, 2, 3 и так далее.
- Ссылка на фото декодируется так же, как и в предыдущих сценариях.
- Если декодирование прошло успешно, бот отправляет запрос в Replicate - на этот раз к модели Pix V4, с максимальным тайм-аутом.
- Если ответ успешен, бот присылает пользователю исходное фото и полученное видео. Если отправить видео напрямую не получилось - присылает ссылки на результат "до" и "после".
- Дальше - снова выбор: сгенерировать ещё или вернуться в главное меню.
Стоит иметь в виду: результат генерации не всегда предсказуем - иногда нейросеть может добавить на видео лишние детали или персонажей, которых не было на фото. Чтобы получить более точный результат, промт лучше формулировать максимально конкретно.
Настройка приёма оплаты
Чтобы бот мог принимать реальные платежи, зайдите в раздел "Настройки" → "Интеграции" и выберите нужную платёжную систему, например ЮKassa. Потребуется заранее зарегистрироваться в ЮKassa и получить API-ключ и Shop ID - их нужно вставить в настройки интеграции, а также указать систему налогообложения и ставку НДС.
Дополнительно нужно скопировать ссылку из раздела Webhook в конструкторе и вставить её в личном кабинете ЮKassa. После сохранения настроек бот полностью готов принимать оплату от пользователей.
Если бот нужен только для себя
Если вы не планируете принимать оплату от посторонних пользователей, а хотите использовать бота только лично, замените стрелку из стартового блока так, чтобы она сразу вела на блок с запросом фото в нужном сценарии, минуя блок оплаты.
Итог
В результате получился чат-бот с тремя независимыми функциями - обработкой, реставрацией и оживлением старых фотографий - и встроенной монетизацией. Основную работу выполняет связка HTTP-запросов: сначала бот декодирует ссылку на фото через API Watbot, затем передаёт её в Replicate с нужной моделью и промтом, а после получения ответа показывает пользователю результат "до и после".
Полезные ссылки
Ссылка на шаблон бота:
Сервис нейросетей для обработки, реставрации и оживления фото:
Наше сообщество в мессенджере Max:
Видео инструкция: