{"id":14293,"url":"\/distributions\/14293\/click?bit=1&hash=05c87a3ce0b7c4063dd46190317b7d4a16bc23b8ced3bfac605d44f253650a0f","hash":"05c87a3ce0b7c4063dd46190317b7d4a16bc23b8ced3bfac605d44f253650a0f","title":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u043d\u0435 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0432 \u043d\u0438 \u043a\u043e\u043f\u0435\u0439\u043a\u0438","buttonText":"","imageUuid":""}

А когда цена на такси упадет: Телеграм бот для отслеживания стоимости поездки

Taxi Watcher - Promo

О чем статья?

Я бы хотел рассказать о своем опыте написания чат-ботов в Телеграм.

Однажды летом я сидел и думал: что такого можно написать для решения какой-либо задачи? Да и вообще, каким проектом себя занять? Хотелось создать решение не только для себя, но и для других пользователей.

И вот, мой взор пал на разработку Телеграм бота на Python.

Предыстория

Начинал вливаться в программирование пару лет назад, и начинал с Python. Затем верстал сайты, пробовал мобильные приложения, а в универе пишу C#.

Верстка сайтов показалась прикольной вначале, но я так и не смог втянуться. Мобильные приложения попробовал и понял, что тоже – не мое. C# классный язык для понимания алгоритмов и в целом того, как нужно программировать, но делать что-то на нем… идея однозначно отпала.

Иронично, что по итогу я выбрал тот язык, с которого начинал – Python. Он показался мне более масштабным, чем вышеперечисленные, ведь он есть буквально везде: от web-разработки серверной части, до геймдева.

Но все же, мой взор пал на разработку Телеграм бота. Это показалось совсем новым для меня, а Taxi Watcher – моим первым ботом (но о нем позже).

Боты в Телеграм – великолепное решение! Одна платформа, и столько выбора: куча тг-каналов, самые разные боты, ну и мессенджер, в конце концов. Главное – аудитория есть, и ее много.

Ниша выбрана, а что писать то?

Мне давно интересно было развернуть какой-либо проект на сервере, управлять пользовательскими данными при помощи структур, анализировать действия пользователя и т. д.

И вот, прилетает идея: мол, а что, если сделать бота, который бы отслеживал стоимость поездки на Яндекс Такси? Начал гуглить, нашел API, написал базовый скрипт и… он заработал! Так я и начал оборачивать этот скрипт в обертку – в бот.

Сущность Taxi Watcher

Бот отследит стоимость поездки на такси и уведомит, как только цена упадет до заданного лимита.

Пользователь задает лимит поездки, за который хочет уехать, затем устанавливает адреса поездки: откуда и куда, прямо через геопозицию в Телеграм. Процесс отслеживания начинается сразу.

Также я написал инструкцию, где чуть подробнее расписан гайд по использованию, а также сделал еще более подробную и поместил в «Часто задаваемые вопросы».

Взаимодействие с ботом

Действия на старте

Нажимая «Начать», пользователь сразу видит короткое описание бота, и как взаимодействовать с ним. Ах, сколько раз я переписывал стартовое сообщение в надежде сделать его простым и доступным. Надеюсь, у меня это действительно получилось.

Отправка геопозиции

Нажав «Отправить точку отправления», пользователь отправляет геопозицию прямо из Телеграм.

Затем то же самое делает для точки назначения (просто перемещая точку).

Важно:

Адреса не хранятся в постоянной памяти и могут быть очищены пользователем принудительно. Оно никуда не передаются, кроме как для построения маршрута.

Дополнительно я добавил короткий видос с тем, как это сделать (ну что прям точно разобрался).

Выбор тарифа

Подбор тарифа происходит таким образом: сначала идет отправка к другому API для получения информации о доступных тарифах в регионе, формируется ответ и отображаются доступные. Если тарифов нет, бот скажет об этом.

Также, я сформировал список ошибок, которые могут возникнуть, и там же варианты решения.

Информация о поездке

Затем заполняется шаблон картинки с информацией о поездке.

Стоимость достигла лимита

И вот, как только стоимость упадет, бот пришлет такое уведомление. Сразу со сформированной ссылкой для перехода в приложение, с уже заданными адресами.

Не всегда цена в ответе Yandex API совпадает с тем, что в приложении, поэтому я добавил ссылку «Другая цена», которая ведет на страницу с часто задаваемыми вопросами, где описаны возможные причины этого.

Кнопки

Кнопки

Отдельного внимания (я считаю) заслуживают кнопки-подсказки. Я их сделал логичными, удобными и нужными. Например, как только стоимость упадет, появятся кнопки с предложением переустановить адрес и лимит, а также возможность просмотреть данные, которые оставил пользователь (адреса, заданный лимит и выбранный тариф).

Момент, когда пользователь начал отслеживание

Их появление подстраивается под пользователя и всплывают только тогда, когда они нужны.

Вот основные:

  • Установка лимита и адреса предлагается только в том случае, если они еще не были установлены
  • При нажатии на «Статус отслеживания» отображается статус: отслеживается или нет, а также текущая стоимость поездки на данный момент
  • Если есть кнопка «Очистить данные» (или «Очистить отслеживаемые данные»), то есть данные об адресах, лимите и тарифе, которые оставлял пользователь

Дизайн

Сначала это был просто бот, ответы которого формировались чисто текстом. Но потом я подумал: ведь можно сделать немного красивее, добавив картинки.

Изображение на старте и информации о поездке

Также мне было просто в прикол делать промо, в который я накидал свои дизайнерские наработки. Возможно, это не вышло так стильно, как это можно было бы сделать (потому что нет единого дизайн-кода, в принципе дизайнерского подхода как такового), но тем не менее: мне понравилось дизайнить, и это клево.

Резюме

Мне будет интересно услышать мнение о проекте, возможные улучшения и в целом оценку его перспективы, так что делитесь ими в комментариях :)

Бот доступен тут.

Ссылки

Документация (для пользователя)

0
15 комментариев
Написать комментарий...
Media Matters

Интересная задумка. Как вариант, можно ещё предупреждать пользователя о маловероятных ценах. То есть, если человек установил, что хочет уехать на бизнесе за 200 руб., бот мог бы сразу написать, что, статистически, такая цена маловероятна и следует повысить планку.

Ответить
Развернуть ветку
Kozak Developer
Автор

Да, это действительно хорошая идея и, отчасти, это уже реализовано. Яндекс API возвращает минимальную стоимость по этому маршруту и бот уведомляет, что стоимость может не достигнуть лимита

Ответить
Развернуть ветку
rubitoor

А ещё Алеша следит за вашими действиями! И отправляет в бан неугодных! Не советую пользоваться!!

Ответить
Развернуть ветку
NIMOgio

👍

Ответить
Развернуть ветку
Kozak Developer
Автор
Ответить
Развернуть ветку
Stephan Aldridge

Это вообще прикольная задумка

Ответить
Развернуть ветку
hldrive

Придерусь, вот я собрался куда-то ехать - я понятия не имею, сколько это стоит. Логичней сначала задать точки, получить текущую и минимальную цены, а потом задать свою.

Ответить
Развернуть ветку
Миша Горностай

Логичным действием в этом случае будет открыть приложение для вызова такси и заказать поездку. Так и узнаёте сколько она будет стоить, возможно цена вас устроит, и необходимости использовать бота не будет

Ответить
Развернуть ветку
Kozak Developer
Автор

А если цена будет завышена, то заходить каждые 5 секунд в приложение, чтобы проверить цену... Такое себе

Ответить
Развернуть ветку
Геннадий Прототипов

Это крутой бот, который использует Гугл карты для построения маршрута на Я.Такси))

Ответить
Развернуть ветку
Kozak Developer
Автор

Бот не использует Гугл карты.

Ответить
Развернуть ветку
Ilya

Предложил бы функционал графика цены по времени дня/неделе. Но тут надо задать адрес а потом копить стату, иначе надо пылесосить все данные с Яндекса :)

Ответить
Развернуть ветку
Ilya

Например, я езжу в офис и обратно - в какое время самая низкая цена и когда она начинает расти? Может быть мне уезжать раньше или позже, чтобы сэкономить

Ответить
Развернуть ветку
Kozak Developer
Автор

Задумка реально годная, но появляется резонный вопрос: как это сделать? Получается, для каждого пользователя выбирать один маршрут и собирать данные в течение дня. Очень затратно по мощностям, я думаю. Но, абстрагируясь, это звучит как нужна фича :)

Ответить
Развернуть ветку
Евгений Атланов

Теперь надо такого же бота для отслеживания цены доставки в деливери и прочих

Ответить
Развернуть ветку
12 комментариев
Раскрывать всегда