Задача

Необходимо разработать Telegram-бота для организации взаимодействия заказчиков и исполнителей. Бот должен выступать в роли гаранта сделки: резервировать средства заказчика на депозите и переводить их исполнителю только после подтверждения выполнения через уникальный код, отправленный по электронной почте.

Функциональность бота

1. Экран приветствия и выбора роли

При первом запуске пользователю предлагается выбрать один из статусов: «Заказчик» или «Исполнитель». Роль закрепляется за пользователем и может быть изменена.

2. Сценарий для Заказчика

  • Оформляет заказ, указывая все необходимые параметры.
  • Осуществляет предоплату. Средства списываются с баланса заказчика и резервируются на внутреннем депозите бота.
  • После того как Исполнитель взял заказ, заказчик утверждает кандидатуру.
  • Получает уведомление о завершении заказа (с предоставлением ссылки на объявление) только после успешной проверки кода.

3. Сценарий для Исполнителя

  • Получает уведомление о новом заказе, может откликнуться на него.
  • После утверждения заказчиком и выполнения работы нажимает кнопку «Сдать заказ».
  • Для получения оплаты необходимо переслать боту письмо с кодом подтверждения, заново высланное на email исполнителя.
  • Если код корректен, уникальный номер подтверждения записывается в базу данных (проверка на отсутствие дубликатов). Деньги с депозита перечисляются на баланс исполнителя.

4. Подтверждение выполнения

  • При нажатии кнопки «Сдать заказ» бот инициирует отправку письма с кодом на email исполнителя.
  • Бот автоматически обрабатывает письма через интеграцию с почтовым протоколом (IMAP/POP3) и отправленный набор данных перепроверяется.
  • В случае провала верификации заказа, средства возвращаются заказчику.

Дополнительные требования

  • Убедиться, что код полностью и хорошо прокомментирован на русском языке.
  • Предоставить инструкцию по настройке и использованию (мануал).
  • Обязательно осуществить деплой на хостинг.
  • Реализовать защиту от повторного использования подтверждающих кодов.