Все работы

P2P Exchanger: объявления и заявки в Telegram

Внутренний инструмент для компании: участники размещают предложения о покупке или продаже валюты и откликаются на них, автор объявления принимает решение, а администратор ведёт заявку дальше в веб-панели. Платежи и переводы стороны выполняют вне бота.

Задача: связать предложение с дальнейшей работой по заявке

Объявление описывает предложение: какую валюту участник хочет купить или продать, сколько и на каких условиях. Заявка — конкретный отклик другого участника на это предложение. В ней важно сохранить обе стороны, выбранный объём, курс и условия, а затем связать с ними решение автора и дальнейшие действия администратора.

Именно этот процесс я объединил в P2P Exchanger. Участники работают в Telegram, а для административной работы предусмотрена отдельная веб-панель. Условия и состояние заявки сохраняются в системе, а не остаются только в сообщениях.

Как предложение становится заявкой

Рассмотрим путь покупателя, который откликается на объявление о продаже.

  1. Автор размещает предложение. Выбирает валютную пару, задаёт свой курс, объём и условия. Перед созданием проверяет сводку и подтверждает публикацию. Открытое объявление становится доступно другим участникам, которые хотят купить эту валюту.
  2. Покупатель выбирает объявление и вводит нужный объём. Бот создаёт связанную с предложением заявку: сохраняет обе стороны, переносит курс и условия, рассчитывает сумму. Покупателю не нужно заново вводить параметры выбранного предложения — он указывает количество для своего отклика.
  3. Заявка поступает автору на решение. Покупателю направляется карточка заявки, автору — уведомление о запросе. Доступное количество в объявлении уменьшается уже при создании заявки, до ответа автора: система учитывает запрошенный объём предложения, а не блокирует деньги.
  4. Автор принимает или отклоняет заявку. При принятии предусмотрены сообщения участникам и администратору, который продолжает работу с заявкой. При отказе заявка отменяется, а запрошенное количество возвращается в доступный объём объявления. На этом ветка отказа заканчивается — передачи администратору нет.
  5. Администратор ведёт принятую заявку в веб-панели. Он вручную отмечает ожидание и затем завершение. Для отметки о завершении предусмотрены сообщения обеим сторонам. Согласие автора и завершение заявки — разные события: дальнейшие этапы отмечает человек, бот не определяет поступление оплаты самостоятельно.

Предусмотрен и обратный путь: продавец откликается на объявление о покупке. Поэтому автор объявления — не обязательно продавец; его роль в процессе — задать предложение и решить, принимать ли отклик.

Автор размещает объявление о покупке или продаже валюты с курсом, объёмом и условиями. Другой участник указывает объём отклика. Создаётся связанная заявка, и доступное количество в объявлении уменьшается ещё до ответа автора. Далее две ветки. Если автор принимает заявку, администратор ведёт её в веб-панели, вручную отмечает ожидание и затем завершение; для завершения предусмотрены сообщения обеим сторонам. Если автор отклоняет заявку, она отменяется, запрошенное количество возвращается в доступный объём объявления, и эта ветка заканчивается без передачи администратору. Платежи и переводы стороны выполняют вне бота.

Согласие автора передаёт заявку в работу администратору; отказ отменяет её и восстанавливает доступное количество в объявлении.

Что я разработал

Я лично создал весь проект с нуля: Telegram-интерфейс, серверную логику, базу данных и веб-панель. Связал действия участников с сохранением условий, решением автора и административным ведением заявки.

  • Рабочий интерфейс участников в Telegram. Кроме размещения и откликов, автор может снять своё объявление с публикации и позже вернуть его в выдачу. Для удаления предусмотрено подтверждение.
  • Веб-панель для администратора. В ней можно вести пользователей и их статусы, находить объявления конкретного автора, менять их видимость и вручную отмечать дальнейшие этапы заявок. Администратор работает с записями того же процесса, который участники начинают в Telegram.
  • Поддержку текстов и меню существующих действий. В панель вынесены шаблоны сообщений, кнопки, меню и справочные данные. Текстовое оформление можно поддерживать там, без правки каждой фразы в коде. Это настройка уже реализованных действий, а не конструктор новой логики бота.

Результат: переданный инструмент, который используется в работе

Я передал заказчику готовое решение, и оно используется в реальной работе компании. В одном процессе связаны условия предложения, отклик другого участника, ответ автора и дальнейшее ведение заявки администратором.

Практический результат этой связки — заявка создаётся по выбранному объявлению с его курсом и условиями, без повторного ввода этих данных при отклике. Администратор продолжает работу с записью, в которой уже сохранены участники, объём, расчётная сумма и статус.

Технологии: Python, Telegram Bot API, Flask / Flask-Admin, SQLAlchemy, HTTP-интеграция.

Обсудим вашу задачу?

Коротко опишите, что хотите изменить или создать. Готовое ТЗ не нужно.

Конфиденциальные данные присылать не нужно.

Обсудить похожую задачуВсе работы