Бомбила бот для Telegram или как родился LibreTaxi


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

Ресурсов катастрофически не хватало. Не было денег, не было времени, не было друзей, которые были готовы прорубать себе путь к счастью в Силиконовой Долине в обмен на шанс. Казалось, всех всё устраивало — средненькая работка, средненькое жилье, жизнь середнячка. Я быстро пришел к выводу, что какой-либо серьезный стартап запилить не получится, нужно было какое-то решение.

И тут как гром в чистом небе появился он… Да, дорогие друзья, как вы, наверное догадались это был…



Паша Дуров с его конкурсом. Нет, я не встретился с ним лично, а всего лишь увидел о конкурсе для разработчиков Телеграм ботов. Это было в Апреле 2016 и по условиям надо было сделать своего бота до конца года. Предлагаемые деньги для Долины были не такими уж и большими, но тут совпало сразу несколько факторов.

Во-первых, я уже делал своего бота для Телеграма и мне понравилось. Он конвертировал валюты, используя API одной из бирж. Я делал его для себя и то, что получилось мне показалось это очень удобным.

Во-вторых, у меня было большое желание что-то, наконец, сделать. Я давно ничего не делал для себя и всего лишь работал на дядю составляя программы для ЭВМ на ЯВУ ruby и javascript.

В-третьих, конкурс. Шанс есть шанс, а вдруг получится? Однажды я уже использовал шанс — выиграл грин-карту в лотерею. Играл пять лет, но все-таки получилось. Может быть и в этот раз получится?

Ну и самое главное — я всегда хотел сделать приложение, которое бы работало под все платформы. И на десктопе, и на андроиде, и на айфонах, и в вебе. Что-то более или менее серьезное можно было сделать только потратив колоссальное количество ресурсов, которых у меня не было. Поэтому до каких-то пор это было лишь далекой мечтой. Но с появлением платформы для разработки ботов в Телеграме все поменялось.

Game changer



Да, Telegram стал game changer'ом. Посудите сами:

1. Пишешь 1 раз, работает сразу на всех устройствах. Это относится и к «сложной» функциональности: кнопки, меню, карты, картинки и т.д.

2. Встроенная система регистрации, если юзер обратился к боту, значит он уже зарегистрирован, его номер телефона подтвержден, анти-спам проверка пройдена

3. Готовый профиль: аватарки, возможность блокировки

4. Готовая и мощная система общения, которая является основой Телеграма. По сути пользователи могут общаться между собой. Если бы ее не было, в приложении бы пришлось реализовывать свою систему сообщений (которая бы наверняка не включала такие фишки как аудио-заметки).

Плюс кое-что еще. Другими словами, появился шанс без особых усилий и лишних трат и так скудных ресурсов создать MVP какого-либо продукта. Теперь нужна была идея!

На пути к MVP



Что же такого сделать? Где взять идею? Обстоятельства сложились сами, удача приплыла мне в руки и я за нее ухватился.

Дело в том, что мой друг в это время собеседовался в разные компании в Силиконовой Долине (уже работая тут). Мы постоянно делились задачами, решениями, алгоритмами, подходами и т.д. И вот в один из дней он сказал, что идет в компанию Убер (забегая вперед скажу, что он сейчас там работает). Разумеется не водителем, а программистом. В моей голове щелкнуло и мысль стала развиваться в этом направлении.

Кому нужен еще один Убер? Кому под силу конкурировать с 1000 программистами, которые сидят в одном здании на 555 Market street? Какие конкурентные преимущества должны быть у продукта, чтобы им пользовались люди? Откуда возьмутся деньги на маркетинг?

Я думал и размышлял, одновременно получая вести с Родины. А на Родине было все по-прежнему. Безработица увеличивалась, люди шли в такси. Один хороший друг, бывший трейдер, стал бомбилой в Питере, накопил за сезон немного денег и зимой уехал в Гоа. И у меня родилась идея и даже название для проекта!

Бомбила бот!



Почитывая новости в США про Убер я думал — регуляции, регуляции, опять эти регуляции. Там Убер запретили, тут хотят запретить, тут забастовки. А кто запретит бомбил? Никто, они как были, так и останутся всегда. Им нужно решение, недорого, без регистрации и смс.

Но находясь в Америке моя рука не поднялась назвать проект «Бомбила», и имя @bombila_bot на момент написания этого поста еще доступно в Телеграме. Я назвал его кодовым именем CheapTaxi, дешевое такси, и начал думать над реализацией, попутно советуясь со своим другом, настоящим бомбилой из Питера.

Терни реализации



Телеграм, как платформа, дает многое. Но взамен многое забирает. Хорошо это или плохо? С одной стороны плохо. Ты не можешь сделать такой вещи как, например, постоянное отслеживание локации. С другой стороны, это стимулирует тебя не нагружать интерфейс, делать вещи проще.

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

* Бот должен быть мультиязычным. Я люблю русский язык, но я уже наполовину американец — через пару лет получу заветный паспорт. Мультиязычность для меня очень важна.

* Бот должен быть бесплатным. Я не могу конкурировать с Убером, т.к. моих ресурсов хватает только на поддержание собственного существования в пространстве и времени. Лишних денег нет, взять их негде, вера в инвесторов была подпорчена неудачным опытом в прошлом. Поэтому только бесплатно, заодно и меньше программировать.

* Бот должен быть с открытым исходным кодом. Денег на маркетинг нет, как конкурировать на рынке? Кому нужен еще один продукт, как конкурировать с теми 1000+ разработчиков, которые сидят на 555 Market street? Надежда на open source коммьюнити. Меня вдохновило видео от создателя Rocket Chat, который рассказывал о том, как JS и фреймворк Meteor помог привлечь серьезный интерес со стороны людей со всего мира к его проекту.

* Бот должен быть на самом популярном языке — JavaScript, чтобы люди могли менять, исправлять, фиксить баги. Остановился на стандарте ES6, все равно по работе нужно его было более углубленно выучить.

* Бот должен быть с «нормальной» лицензией, которая позволяет делать все с исходным кодом. Остановился на MIT.

* Архитектура должна быть построена таким образом, чтобы при бане в Телеграме потребовались минимальные усилия для портирования его на другую платформу. Я, конечно, верю в Пашу Дурова и его принципы, надеюсь, что не придется портировать бота куда-либо еще. Но кто знает? Проекты покупаются, продаются, люди меняются. Если уж вкладывать усилия, то так, чтобы они не пропали потом. Поэтому начал разработку вообще для консоли. Первые 7 из 9 месяцев разработки Telegram API даже не трогал.

* Как еще я могу конкурировать с Убером, какие у меня сильные стороны? Мне надо двигаться быстро. Чтобы было меньше ошибок, нужны были хорошие тесты. Поэтому изначально стремился к максимальному покрытию. На практике оказалось, что инструменты для моего test runner'a (ava) все равно считают покрытие неправильно. Да и если покрытие 100%, то это лишь красивая циферка, которая на практике совсем не означает 100%. Поэтому измеритель отрубил, и стал просто покрывать тестами исходя из здравого смысла. К слову, получилось это неплохо. За все время разработки я ни разу не запускал отладчик, т.к. все равно ничего не ломалось.

Квантовый скачок времени



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

Типичный день выглядел так: подъем в 6:20, выход на работу в 7 утра. С 8 до 5 работа. В 6 вечера домой, с 6 до 9 или с 7 до 10 вечера — бот. На большее не хватало. Но иногда бывали праздники, выходные, на них я тоже программировал.

Было желание все бросить, особенно в самом начале, когда понимал СКОЛЬКО оставалось всего сделать. Но потом все-таки продолжал, разбивая задачу на мелкие подзадачи. Успокаивал себя тем, что если не успею до конца года, то не буду переживать. К слову, конкурс продлили до 2017. И я благодарен команде Телеграм за то, что они не объявили об этом в июне. Дедлайн работал на меня и подстегивал делать быстрее.

К слову, 29 декабря я засабмитил своего работающего бота на конкурс, получил своих первых 300 пользователей, протестировал в разных регионах мира, получил первый фидбек, хороший проект для добавления в свое резюме, значительную дозу эндорфина, и вообще у меня создалось ощущение, что 2016 прошел не зря.

Новое название — LibreTaxi



Я перепробовал много названий, обычно все домены были заняты. Но по аналогии с LibreOffice решил назвать его LibreTaxi — бесплатная альтернатива Уберу с исходным кодом, также как и LibreOffice был (и есть) бесплатной альтернативой Office с исходным кодом.

Что в итоге получилось



Получился телеграм-бот а-ля Uber/Яндекс.Такси, в котором:

* Бесплатная регистрация для всех водителей, сервис не берет денег в отличие от корпораций
* Можно торговаться и задавать цену
* Регистрация за 1 минуту без аппрува
* Водители могут задавать радиус для уведомления о заказах вокруг
* Люди могут создавать ботов для своих регионов на основе имеющегося исходного кода

Предлагаю вам посетить домашнюю страничку бота в Интернете, где вы сможете скопировать программу себе на НЖМД или дискету, ознакомиться с документацией и исходным кодом:

libretaxi.org/index-ru.html

А можно добавить сразу в Телеграм: telegram.me/libretaxi_bot

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


К сожалению, не доступен сервер mySQL