Support us

Разработчик сделал бота для Маяка Минска с 400+ объектами. Код на гитхабе

Разработчик Илья Зверев всего за 3 недели сделал телеграм-бота для района Маяк Минска, включив в него информацию по 400+ объектам. Всю самую сложную работу по сбору данных Илья переложил на свой бот — и поделился результатом в блоге и комментариях для dev.by. Спойлер: проект опенсорсный, поэтому кто угодно может сделать похожего бота для своего района. 

9 комментариев
Разработчик сделал бота для Маяка Минска с 400+ объектами. Код на гитхабе

Разработчик Илья Зверев всего за 3 недели сделал телеграм-бота для района Маяк Минска, включив в него информацию по 400+ объектам. Всю самую сложную работу по сбору данных Илья переложил на свой бот — и поделился результатом в блоге и комментариях для dev.by. Спойлер: проект опенсорсный, поэтому кто угодно может сделать похожего бота для своего района. 

Разработчик рассказал, что в Маяке Минска три ТЦ, не считая Dana Mall, плюс магазины и заведения в подвалах почти каждого дома — «запомнить невозможно, хочется нарисовать карту».

Вместо карты Илья за три недели написал телеграм-бота. Это удобнее, чем интерактивная карта, считает автор.

— Во-первых, интерактивная карта с маркерами — признак ленивого интерфейса. Всегда можно придумать лучший интерфейс, который не будет заставлять человека таскать картинки по экрану. Во-вторых, веб не нужен. Жизнь уходит из страничек в браузере, они — для чтения лонгридов. А люди тыкают в экраны телефонов. Делать проекты нужно там, где живёт твоя целевая аудитория. Ларёк с мороженым лучше открывать на пляже, а не в музее. Указания, куда пройти, — с собой, а не дома на компьютере. Ну и просто интерфейс телеграма — отличный вызов для картографического приложения.

Что делает бот:

  • ищет заведения по ключевым словам;
  • выдаёт карту района, нарисованную поверх спутникового снимка;
  • подсказывает подъезд и этаж по номеру квартиры для всех домов.

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

«Переложить всю сложную работу на бота»

Разработчик отмечает, что самое интересное — «делать не базовые штуки для людей, а организовать процесс сбора заведений, чтобы он не напрягал не разобранными фоточками и записями, был быстр и приятен, не требовал дня отдыха после дня работы». 

Этому предшествовала встреча: однажды Илья познакомился на улице с девушкой, которая занималась тем же — собирала данные о заведениях для своего бота. Она пошутила, что в отличие от неё у Зверева, похоже, куча свободного времени. Разработчик задумался над её словами, вспомнил свой десятилетний опыт рисования карты OpenStreetMap и решил, что сделал правильно, отказавшись от двухэтапного картирования. Потому что «гулять по району весело, а вносить потом часами данные — не очень». 

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

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

— Вводить «https://» муторно — пусть бот сам превращает «Ttn. By» в «https://ttn.by». Не ждём точек с запятой и дефисов, позволяем пробелы и запятые. Вместо ввода номера дома предлагаем выбор из ближайших адресов. Ну и так далее: не нужно заставлять человека делать работу, с которой справится машина, — отмечает он.

Так разработчик собирал по 60-100 заведений в день, около 15 в час. Причём не только переписывал данные, но и общался с сотрудниками заведений (многим он раздал визитки бота). «На районе около полутысячи заведений — знай я это заранее, дважды бы подумал, запуская проект».

Базовые операции в вебе и редактор точек в GeoJSON

В процессе работы возникли ещё трудности: так Илья «разочаровался в сложности базовых операций в вебе». 

— Получить числа координат для прямоугольника просто, это можно сделать на нескольких сайтах (например, здесь), а скопировать координаты одной точки — нет. Специальные сайты писались 7-8 лет назад и все сломались. А использовать для этого osm.org, где нужно открывать панель, ставить галочку, нажимать Ctrl+C… Линукс-версия телеграма не позволяет прикреплять координаты, поэтому пришлось писать свой сайт на замену. Очень простой: двигаешь карту, нажимаешь кнопку, вставляешь куда нужно.

Чем разработчик по-настоящему гордится — редактором точек в GeoJSON, которым пользуется для «причёсывания» базы заведений бота. 

— Классические редакторы типа geojson.io, uMap, QGIS не катят: чтобы отредактировать точку, нужно ползать по таблицам, двигать мышкой, нажимать «сохранить». Здесь же всё супер-просто: двойной клик для создания точки, все свойства — простым текстом типа «name Название», по примеру Level0. Поэтому копипаст пачки атрибутов вообще не проблема. Есть фильтр а-ля поиск в JOSM, всё сохраняется автоматически и можно восстановить, если закроешь вкладку. Никаких меню и не больше шести кнопок на экране, — отмечает Илья.

Что будет с ботом, если разработчик съедет?

Бот опубликован на гитхабе, к нему прилагается документация в пяти частях на русском языке. В ней разработчик описал весь процесс: от обхода подъездов и установки бота до сбора заведений и администрирования. «Если не считать русского языка, сообщения на котором разбросаны по коду, бот не привязан ни к каким атрибутам моего района», — отмечает Илья. 

Что будет с ботом, если разработчик решит вдруг съехать с Маяка Минска, — кто будет обновлять данные. Илья честно отвечает: «Не знаю». Под любым заведением в боте есть кнопка «Поправить», можно также добавить новое. Но автор резонно полагает, что никто этим заниматься не будет.

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

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

Читайте также
«Если не пьёшь, делать там нечего». Почему айтишники игнорят корпоративы (аргументы не только про алко)
«Если не пьёшь, делать там нечего». Почему айтишники игнорят корпоративы (аргументы не только про алко)
«Если не пьёшь, делать там нечего». Почему айтишники игнорят корпоративы (аргументы не только про алко)
Дети, лень и «пьяные рожи».
15 комментариев
«Грандиозный ужин, куда слетались все офисы, так и не вернули». Корпораты уже не те — один пример
«Грандиозный ужин, куда слетались все офисы, так и не вернули». Корпораты уже не те — один пример
«Грандиозный ужин, куда слетались все офисы, так и не вернули». Корпораты уже не те — один пример
Сотрудникам обещали вернуть прежние корпоративы после пандемии, а в итоге уволили эйчара, который упомянул о прежнем формате в Slack.
6 комментариев
Топ-10 товаров, которые айтишники просят привезти из Беларуси (идеи для подарков!)
Топ-10 товаров, которые айтишники просят привезти из Беларуси (идеи для подарков!)
Топ-10 товаров, которые айтишники просят привезти из Беларуси (идеи для подарков!)
Сырки (в том числе с пандой) тоже в списке.
41 комментарий
Есть случай блокировки от PKO. Похож на санкционный (хоть и нестандартный)
Есть случай блокировки от PKO. Похож на санкционный (хоть и нестандартный)
Есть случай блокировки от PKO. Похож на санкционный (хоть и нестандартный)
Странность в том, что блокировка случилась до 11 декабря — даты первого дедлайна.
2 комментария

Хотите сообщить важную новость? Пишите в Telegram-бот

Главные события и полезные ссылки в нашем Telegram-канале

Обсуждение
Комментируйте без ограничений

Релоцировались? Теперь вы можете комментировать без верификации аккаунта.

Комментариев пока нет.