Путь Разработки Телеграм-Бота: От Гипотезы до Микросервисов

Введение

В этом цикле статей я подробно расскажу о процессе создания моего нетривиального телеграм-бота World for Life Bot. Этот бот представляет собой уникальный инструмент, который предоставляет обширную статистику о стоимости жизни в разных уголках мира, помогая пользователям оценивать и сравнивать уровень жизни в различных городах.

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

  1. Релоканты: Люди, планирующие переезд в другую страну, и желающие заранее узнать о стоимости жизни на новом месте.

  2. HR-Специалисты: Работники отделов кадров, занимающиеся подбором персонала для работы в разных странах, для которых важно понимать экономические условия в разных регионах.

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

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

Опыт и Начальные Этапы

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

Разработка каждого бота начиналась с тщательного исследования рынка и построения дорожной карты. Этот процесс я вел самостоятельно, опираясь на накопленный опыт и постоянно анализируя текущие тенденции и потребности пользователей. Мой подход к разработке был целенаправленным и многогранным, сочетая в себе техническое мастерство и стратегическое планирование.

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

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

Выбор Формата Телеграм-Бота

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

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

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

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

Эволюция Проекта

Сервис, за менее чем год, пережил несколько ключевых этапов развития.

  1. Проверка Гипотезы: Первый шаг в реализации моего проекта телеграм-бота заключался в проверке основной идеи и изучении реакции потенциальной аудитории на предложенный функционал. Важно было понять, насколько концепция будет востребована среди пользователей.

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

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

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

  2. Переход к Работе с Базами Данных: После первых подтверждений интереса к сервису, который я наблюдал через упоминания в чатах и увеличение числа пользователей (в некоторых случаях до 50 человек, посетивших сервис по 1 сообщению), стало ясно, что пора переходить к следующему этапу развития. Чтобы обеспечить стабильность работы и надежное хранение данных, с систему была интегрирована база данных.

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

    Использование баз данных не только улучшило стабильность работы сервиса, но и значительно ускорило время запуска бота, сделав доступ к данным более быстрым и эффективным. Кроме того, для лучшего понимания интересов пользователей, я начал отслеживать посещения определенных страниц бота. Это дало возможность более точно анализировать поведение пользователей и их предпочтения, что в дальнейшем помогло совершенствовать и оптимизировать функционал бота.

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

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

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

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

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

Будущие Публикации

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

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

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

В дополнение, я планирую раскрыть информацию о дополнительных функциях и сервисах, которые были внедрены в проект, и поделиться планами на будущее. Эти статьи предоставят глубокий и всесторонний взгляд на весь путь развития проекта, его успехи и вызовы, с которыми я столкнулся.

Заключение: Я верю, что такой опыт будет полезен как начинающим разработчикам, так и опытным специалистам, стремящимся создавать инновационные и востребованные продукты.

Буду рад за конструктив в комментариях, а также ваш опыт в разработке и продвижении телеграм-проектов

Комментарии (25)


  1. APXEOLOG
    08.01.2024 18:25
    +4

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

    Переход в браузер осуществляется нажатием 2х кнопок (если мы говорим про мобильное устройство), а открытие сайта не должно быть сильно медленнее, чем поиск бота в списке контактов. При этом сайт могут использовать кто угодно и везде где есть браузер, а бота могут использовать только пользователи телеграм.

    В общем с "удобный, доступный и инновационный сервис" я бы поспорил уже на этапе выбора платформы.


    1. Kkeiv Автор
      08.01.2024 18:25
      +1

      Можем и обсудить, ведь для Телеграм платформы сервис действительно уникальный. Да и это не просто "пересылка" а полноценный сервис со своей системой рейтингов и небольшой экосистемой из 2 серверов.


    1. Kkeiv Автор
      08.01.2024 18:25
      +3

      А телеграмм имеет и свои плюсы. К примеру в него можно форварднуть смс - это пака кликов. А на базе это можно тоже строить интересные сервисы. Я обязательно позже распишу как мы это использовали.


      1. APXEOLOG
        08.01.2024 18:25
        +1

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

        Для меня сложно представить как можно рассматривать обширную статистику и сравнивать что-то в телеграме. Тут прямо напрашивается какой-то табличный режим, фильтры, ну в общем datatables на web-страничке.

        Наверняка можно придумать интересные продукты, где телеграм зайдет хорошо как платформа (хоть мне и сложно это представить), но в данном случае я просто не понимаю в чем преимущество с точки зрения UI/UX


        1. Kkeiv Автор
          08.01.2024 18:25

          А вы смотрели сервис сравнения? По мне так он выполнен достаточно информативно. Да, конечно, сложных запросов вы тут не получите. Зато информационная "выжимка" представлена достаточно презентабельно.

          А чем по вашему телеграмный браузер принципиально отличается от того же Хрома?

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


  1. GospodinKolhoznik
    08.01.2024 18:25
    +2

    Я по поводу КДП внимания хочу написать: вы же ее скорее всего в midjourney 6 сделали? Значит новая версия теперь и в клавиатуры умеет. Раньше я по клавиатурам распознавал AI, клавы все как одна при ближайшем рассмотрении уродливые были, и неправдоподобные. А тут идеальная правильная клавиатура!


    1. Kkeiv Автор
      08.01.2024 18:25

      Это DALL-E. Но результат был получен последовательностью запросов с уточнениями и обсуждениями.


  1. segment
    08.01.2024 18:25
    +5

    Я честно не понимаю всех этих телеграм-ботов пока. Были какие-то попытки использования пары вариантов, но это жутко неудобно. Не в том плане, что одно приложение как платформа для других, а скорее как UX/UI. Понимаю, что пилить новое приложение на любой чих и потом еще поддерживать его (нет) это сильно сложнее, но для меня пока отдельное приложение, пусть и простое, воспринимается лучше. Я один такой?


    1. APXEOLOG
      08.01.2024 18:25

      Все так. Просто телеграм-боты это наверное самый легкий способ сделать минимальный пользовательский интерфейс без особых затрат. Вот их и плодится немерянное количество.

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


    1. Fasterpast
      08.01.2024 18:25

      Они норм как дополнение к тематическому чату какому-нибудь, Но как продукт в себе - не знаю... Разве только что может пригодиться, когда у вас в тарифе есть опция типа "безлимитные мессенджеры в роуминге", и что-то сделать. Я так однажды есим купил. Не сказать, что не смог бы это сделать иначе, Но вот в данном случае через бота было дешевле и удобнее.


    1. Kkeiv Автор
      08.01.2024 18:25
      +1

      Здесь главное не только телеграм бот, а накопленная и систематизированная информация. Телеграм-бот - это скорее фасад. Сейчас в разработке сайт. Но будет он подключен к той же БД.


  1. wicked_sten
    08.01.2024 18:25
    +1

    UI, микросервисы и прочее - это, конечно, хорошо. Но намного лучше было бы, если бы бот выдавал реальные данные, а не какие-то взятые с потолка цифры. И если такие вещи, как зарплата и стоимость жилья еще зависят от многих факторов, то, например, цена одной поездки в общественном транспорте для моего города завышена примерно на 20% - я гарантирую это, сегодня ехал.


  1. savostin
    08.01.2024 18:25
    +1

    Абсолютно бестолковый и бесполезный. Вы уж простите. А текст написан хорошо, вернее солидно. Прям как у взрослых…


    1. Kkeiv Автор
      08.01.2024 18:25
      +3

      Спасибо! Видать к 46 годкам я все-таки научился писать. :)


  1. vindy123
    08.01.2024 18:25
    +2

    Путь Разработки Телеграм-Бота: От Гипотезы до Микросервисов

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


    1. Kkeiv Автор
      08.01.2024 18:25
      +2

      Мотивация одна - вписаться в рынок. Если сейчас это в тренде.


  1. bmc41
    08.01.2024 18:25
    +3

    Практически начал делать такого же бота 2 года назад, но в итоге отказался. Причины 2:

    1. очень сложный ui для бота (видно что ты старался, выглядит вполне достойно, аккуратно, но все еще очень сложно в сравнении с вебом или приложением). т.е другими словами это история не для бота. Либо надо делать webapp.

    2. Откуда взять трафик. И как ты его окупишь. Это вообще единственное о чем стоит думать. Без этого пункта, ни один бот не полетит и не принесет тебе денег. Я не нашел ответа на этот вопрос.

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


    1. Kkeiv Автор
      08.01.2024 18:25
      +4

      Интерес именно в сложной комплексной задаче. За внешней ширмой бота скрыты микросервисы, которые крутятся 24/7 - собирают, обсчитывают и они продолжают плодиться. Что навесить на это - web/app/api - это просто техническая реализация.


  1. FedorMalkin
    08.01.2024 18:25
    +2

    Залипательно было поползать. Но у меня создалось впечатление что до функций прямо нужно докапываться. Не все легко и быстро. А некоторые так вообще спрятаны. Я даже не уверен что все пощупал.


    1. Kkeiv Автор
      08.01.2024 18:25

      Да, возможно так и есть. Как писали люди в других комментариях, основная сложность в работе с телеграм-ботом это. Это удобно предоставить интерфейс пользователю. Я еще в поиске идеальной формы для функционала. На самом деле, есть много задумок и уже реализованного функционала, который пока не оформлен полностью. Я над этим работаю.


  1. afarkhod
    08.01.2024 18:25
    +2

    Здравствуйте. Скажите пжлст, как одновременно показывать keyboard и replayKeyboard? У вас кнопка "На главную страницу" выводит сообщение с кнопками


    1. Kkeiv Автор
      08.01.2024 18:25
      +2

      Добрый день. Это делается последовательным вызовом 2х функций в каждом колбэке, где вам нужно изменить эти клавиатуры. К примеру:

      async def _process_start_command(message: Message) -> None:
      await message.answer(
      "какое-то сообщение для пользователя",
      reply_markup=ReplyKeyboardMarkup(input_field_placeholder="кнопка внизу")
      )
      await message.answer(
      "какое-то предложение для пользователя",
      reply_markup=InlineKeyboardMarkup(<ваша инлайн клавиатура для действий>))

      Если что-то не получится - пишите, пришлю пример кода


      1. afarkhod
        08.01.2024 18:25

        (y) спасибо. А как вы храните состояние (Finite State Machine) и храните ли его?


  1. Artem7625
    08.01.2024 18:25
    +2

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

    Надеюсь на продолжение цикла статей. Интересно будет посмотреть технические моменты, может быть какие-то нестандартные решения и проблемы, с которыми сталкивались.


    1. Kkeiv Автор
      08.01.2024 18:25
      +1

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