Как обычно ищут дешёвые билеты (а может, и туры)?
Я начал исследовать, как можно автоматизировать. Нашёл информацию о том, что у Telegram есть один протокол для работы с ботами, а другой — для работы клиентов, он называется MTProto.
Оказывается, клиенты для десктопов и разных мобилок пишет не сам Telegram, а отдаёт это на откуп сторонним разработчикам. Именно поэтому есть много кастомных клиентов. Значит и мне нужно написать свой (ну как написать — использовать реализацию протокола через либу).
Самая популярная библиотека — это Telethon, написанная на Python. Именно им я пользовался 3 года назад, когда пересылал себе сообщения миниатюрным скриптом, который работал на домашнем компьютере.
Но тут-то я решил расшарить свой лайфхак на OpenSource — значит нужно что‑то серьёзное, разворачиваемое по кнопке и масштабируемое не на меня одного. Начал искать аналогичную либу на Java / Kotlin (мой основной стек), но ни одной готовой работающей библиотеки не нашёл.
Есть либа на C++ от Telegram, но во‑первых, это будет проблема с переносимостью, во‑вторых, она собиралась у меня 30 минут (а ноут улетал в облака) и упала в результате на стандартном MacBook. Значит будем делать минимально возможную версию на Python, а всё остальное на Java.
В итоге получилось две части приложения.
Схема работы модулей
Я сразу подумал, что можно написать spring-boot-starter, в котором уже есть шедулер, работающий на шаблоне проектирования цепочки обязанностей. Достаточно реализовать свои сервисы обработчики сообщений.
Как это работает:
Ищем крутые билеты
Ждём сообщения в личку от аккаунта (нужно разрешить писать тебе не твоим контактам или добавить в контакт свой сервисный аккаунт).
Получаем интересующие сообщения
При желании можно добавлять новые подписки / управлять старыми.
Мораль этой статьи — когда очень что-то надо, люди могут быть очень изобретательными. Теперь у вас есть инструмент для активных путешествий. Как говорится, путешествуйте, оно того стоит, касатики.
- Есть подписка на сервисах бронирований типа Aviasales. Но мне никогда не попадались с её помощью реально хорошие билеты.
- Есть распродажи авиакомпаний. Чтобы словить выгодные билеты, надо подписаться на большое количество авиакомпаний. Будет приходить много писем, и придётся их просматривать на предмет реальной выгоды и интересных вам стран.
- Регулярно смотреть самому интересующее направление. Но здесь подойдёт мем:
Все так же ждали дешёвых билетов? - Подписаться на Telegram‑каналы, которые сами мониторят лучшие предложения, типа Samokatus (мне интересно, они руками это делают или как‑то автоматизировали?). О таких каналах и пойдёт дальше речь.
Что лично для меня не так с Telegram-каналами?
- В них очень много сообщений (до 50 в день). Глазами просматривать это практически невозможно.
- Направления никак не отсортированы по странам. Возможно, это не для всех актуально, но лично я был в Турции уже 7 раз.
- Реально хорошие предложения требую мгновенной реакции, так как улетают как горячие пирожки.
Я начал исследовать, как можно автоматизировать. Нашёл информацию о том, что у Telegram есть один протокол для работы с ботами, а другой — для работы клиентов, он называется MTProto.
Оказывается, клиенты для десктопов и разных мобилок пишет не сам Telegram, а отдаёт это на откуп сторонним разработчикам. Именно поэтому есть много кастомных клиентов. Значит и мне нужно написать свой (ну как написать — использовать реализацию протокола через либу).
Самая популярная библиотека — это Telethon, написанная на Python. Именно им я пользовался 3 года назад, когда пересылал себе сообщения миниатюрным скриптом, который работал на домашнем компьютере.
Но тут-то я решил расшарить свой лайфхак на OpenSource — значит нужно что‑то серьёзное, разворачиваемое по кнопке и масштабируемое не на меня одного. Начал искать аналогичную либу на Java / Kotlin (мой основной стек), но ни одной готовой работающей библиотеки не нашёл.
Есть либа на C++ от Telegram, но во‑первых, это будет проблема с переносимостью, во‑вторых, она собиралась у меня 30 минут (а ноут улетал в облака) и упала в результате на стандартном MacBook. Значит будем делать минимально возможную версию на Python, а всё остальное на Java.
В итоге получилось две части приложения.
- SenderAPI — приложение на Python (аллилуйя СhatGPT), которое:
- Получает подписки с бэк‑части.
- Вступает в группы.
- Читает сообщения группы.
- Пересылает их в личку от аккаунта.
- BackendForwarder — приложение, с которым через бота можно подписаться на открытые группы.
Схема работы модулей
Я сразу подумал, что можно написать spring-boot-starter, в котором уже есть шедулер, работающий на шаблоне проектирования цепочки обязанностей. Достаточно реализовать свои сервисы обработчики сообщений.
Как это работает:
- Вы реализуете свои UpdatesService.
- Шедулер, который запускается в стартере, отдаёт вам сообщения.
А теперь самое интересное — демонстрация
Идём в бот и подписываемся на публичные группы и сообщения с определёнными фразами.Задача: я хочу получать интересные предложения из канала Samokatus.
Ищем крутые билеты
Ждём сообщения в личку от аккаунта (нужно разрешить писать тебе не твоим контактам или добавить в контакт свой сервисный аккаунт).
Получаем интересующие сообщения
При желании можно добавлять новые подписки / управлять старыми.
Мораль этой статьи — когда очень что-то надо, люди могут быть очень изобретательными. Теперь у вас есть инструмент для активных путешествий. Как говорится, путешествуйте, оно того стоит, касатики.
Полезные ссылки, чтобы сделать такого же бота
-
Для просмотра ссылки необходимо нажать Вход или Регистрация(в нём ссылки на Git-модули частей проект).
-
Для просмотра ссылки необходимо нажать Вход или Регистрация
-
Для просмотра ссылки необходимо нажать Вход или Регистрация— бот для подписки.
-
Для просмотра ссылки необходимо нажать Вход или Регистрация— мой Telegram, если возникнут вопросы.
Для просмотра ссылки необходимо нажать
Вход или Регистрация