Трибуна
Roman Solonovich
3391

Как создать Telegram-бота после эксперимента со сном

Полгода назад я написал статью «Я мотивировал себя просыпаться в пять утра и начал медитировать», которая оказалась в топе за год в разделе «Личный опыт». Это была моя первая большая статья, после которой я стал обдуманнее писать своё мнение на личных страницах, так как хейта было предостаточно.

В закладки
Смотрю комментарии к статье​

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

Сам я UX- и UI-дизайнер. Одна из моих мечт — создать продукт, помогающий людям становиться лучше и совершенствоваться каждый день.

Этап 1. Случайная идея

​Попиваю молочный коктейль с подругами

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

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

В тот момент и произошёл щелчок! В дискуссии появилось предложение сделать «личного тренера-помощника», который бы следил за твоим распорядком дня, отслеживал статистику, смещал бы подъём постепенно и окружал бы дисциплинированными людьми, и всё это в образе бота! Мне эта идея сразу понравилась, она включала в себя: помощь людям, саморазвитие и ценный опыт создания продукта.

Этап 2. Поиск площадки

Готовлюсь расписывать логику​

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

Нужна была площадка, где можно быстро проверить идею на актуальность. Telegram в 2019 году с аудиторией в 200 млн пользователей убедил сосредоточиться именно на нём. Год назад я жёстко подсел на Telegram и был уверен, что это та самая площадка для создания первого продукта.

Этап 3. Команда супергероев

Привёл ребят обсуждать идею​

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

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

Этап 4. Создание логики

Перед созданием бота мы понимали, что нужно познать всё о сне и продуктивности, поэтому часть времени ушла на изучение необходимых материалов. Такие книги, как «Зачем мы спим» и «Магия утра», стали скелетом для построения нашей логики.

Часть экрана разработки сценариев в Miro

Весь путь пользователя мы начали писать на онлайн-доске в Miro. Примерно за два-три часа был готов MVP продукта с «жиденьким» текстом. Конечно, это было настолько сыро, что интерес к продукту стал немного теряться.

Было принято решение собрать новые идеи, всё что приходит в голову, и обсудить вместе через неделю. Так у нас появилась новая, пока ещё не реализованная функция на будущее, которой я горжусь, — «Матерный мод». Она переводит обычный текст бота в матерный. Словно ты просыпаешься на стендапе у Соболева, который неожиданно начинает тебе дерзить.

Этап 5. Процесс реализации и программирования

На момент написания статьи каждый из нас работал в офисе 5/2 с 9 до 18 часов. Также у нас есть и другие личные проекты, на которые нужно выделять достаточно много времени, поэтому на быструю реализацию мы не рассчитывали.

Однако у каждой задачи должен быть дедлайн. Мы придерживались закона Паркинсона, когда нужно устанавливать жёсткие сроки, чтобы заставить себя сосредоточиться на деле и не затягивать его выполнение. Забегая вперёд, эта теория потерпела фиаско.

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

Всю документацию мы ведём в Notion. Задачи ставятся на доске, как в Trello. Есть режим реального времени и комментирования. Notion я использую каждый день.

Основная доска в Notion

Бота писали на Java. В этом этапе я принимал минимальное участие, поэтому большего рассказать не смогу.

Часть команд на Java, которые использует бот​

Этап 6. Выпуск альфа-версии

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

Спустя два месяца после старта мы протестировали минимально рабочую версию бота на реальных пользователях.

​Процесс регистрации

Даже Instagram в 500 (из них около 200 реальных) подписчиков, который я редко веду, — не проблема, чтобы собрать первые заявки. Я опубликовал сторис, где рассказал, что мы делаем и что нам нужна фокус-группа до 20 человек для тестирования. Примерно за полчаса я нашел этих людей и выдал им ссылки. Для развёрнутого фидбека был создан чат, в который бот предлагал вступить — именно там мы собирали всю обратную связь.

Пример сбора заявок на тестирование​

Этап 7. «Что за говно вы мне подсунули!». Сбор фидбека от пользователей

Когда увидели первый фидбек от пользователей

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

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

Пример не сильно негативного фидбека​

Все правки мы также фиксировали в Notion.

Спустя 12 дней мы поблагодарили всех ребят за тестирование и... забили на бота. Рассказываю всё, как есть, честно и открыто. У всех появились свои дела и проблемы. Для меня начался период цветения берёз, и меня просто не хватало на этот проект из-за аллергии. На два месяца проект был заморожен.

Этап 8. Стартаперы должны жить. Проекту быть

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

  • Поправить нерабочие кейсы.
  • Убрать ненужную функциональность.
  • Сделать и выпустить минимальную рабочую версию продукта.

Этап 9. Долгожданный релиз 🎉

Отмечаем релиз​

Спустя некоторое время мы поправили все баги и пришли к долгожданному релизу 🎉

Некоторые функции бота:

  • Будит забавными гифками, связанными с тяжёлым утром.
  • Задаёт легкие задачи, чтобы тебе «сложнее» было лечь обратно спать.
  • Записывает задачи на день.
  • Проверяет вечером выполненные задачи.
  • Показывает погоду в твоём городе.
  • Смещает каждую неделю время твоего утреннего подъёма на полчаса.
  • Функция «форс-мажор» позволяет пропустить день из-за неопределённых обстоятельств.
Пример утреннего подъема с ботом​

Мы запуститили бота в массы и с радостью будем развивать проект. Надеюсь, он поможет людям найти своё лучшее утреннее время для подъёма и будет систематизировать ваши задачи.

Буду рад общению. По всем вопросам: Instagram, «ВКонтакте», Facebook, блог-дневник в Telegram.

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Roman Solonovich", "author_type": "self", "tags": ["\u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c","\u043f\u0440\u043e\u0434\u0443\u043a\u0442"], "comments": 14, "likes": 7, "favorites": 62, "is_advertisement": false, "subsite_label": "tribuna", "id": 102131, "is_wide": false, "is_ugc": true, "date": "Mon, 20 Jan 2020 17:38:43 +0300", "is_special": false }
0
{ "id": 102131, "author_id": 267797, "diff_limit": 1000, "urls": {"diff":"\/comments\/102131\/get","add":"\/comments\/102131\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/102131"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199116, "last_count_and_date": null }
14 комментариев
Популярные
По порядку
Написать комментарий...
2

Да, не так просто найти тропинку к пользователю, чтобы бот "зашёл", по душе пришёлся!

Ответить
1

Подожди, мы думали, ты уже стал миллиардером, а ты всё это время бота делал...

Ответить
2

Ладно, шутка :) – по мотивам комментов из предыдущей статьи.

Бот однозначно прикольный!

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

Ответить
0

Мы сделали бота @runshadebot который помогает начать бегать! Посмотрите пожалуйста

Ответить
1

Я не понял как он работает, кроме того что мне хотели продать сначала курс, потом платного тренера. А так да молодцы. 

Ответить
10

 мне хотели продать сначала курс, потом платного тренера.

и после этого вы побыстрее убежали оттуда. вот так и работает )

Ответить
1

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

Ответить
0

Есть такие запросы, которые ни на каком конструкторе не сделать.

Ответить
0

Вебхуки есть для такого)

Ответить
0

А что с монетизацией?

Ответить
0

подписка в месяц за 59р после 10-ти дневного бесплатного периода

Ответить
0

с февраля отменили подписку! теперь бот БЕСПЛАТНЫЙ!

Ответить
0

почему города только россии??? что за дебилизм

Ответить
0

это mvp. В след. версиях завезем остальные страны и города

Ответить
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovx", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "disable": true, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cgxmr", "p2": "gnwc" } } } ] { "page_type": "default" }