Как я создал telegram-бота для чеклистов
Всем привет!
Меня зовут Марк, и я разработчик. С определенного времени я активно начал интегрировать списки и чек-листы в свою жизнь. Дошло до того, что если не записываю что-то, то с большой долей вероятности забываю это сделать. И наилучшим приложением для этого оказался, как ни странно, telegram, так как он всегда под рукой на смартфоне и ноутбуке. А тут еще в прошлом году telegram добавил возможность использовать webapp технологию для ботов. Подробнее об этом можно почитать тут: https://core.telegram.org/bots/webapps . Если кратко, то технология позволяет открывать веб-страницы внутри telegram-бота и организовывать более тесное взаимодействие с ними. Я захотел опробовать технологию и сделать какой-то простой проект. Так зародилась идея сделать бота для чеклистов https://t.me/chchecker_bot.
Данная статья посвящена в большей степени не самой разработке, а моему опыту использования списков и чек-листов в telegram, а также опыту пользователей моего бота по работе со списками, который оказался полезным в том числе для меня. Статья может оказаться интересной и для тех, кто также как и я привык работать в telegram, и по минимуму использовать сторонние приложения, если телега позволяет обойтись без них.
Как я жил с telegram и списками раньше
Алгоритм довольно простой:
Добавить чат с сохраненными сообщениями в закрепленные, чтобы не нужно было искать его среди бесконечных переписок.
Записывать туда все подряд.
В течение дня заглядывать в чат, чтобы проверить что-то из задач на день.
Если требовалось что-то важное или ко времени, ставить отложенные сообщения самому себе.
Внутри чата с сохраненками закреплять какие-то важные сообщения, чтобы проще было найти. Иногда ставил теги, которые смогу вспомнить, тоже для облегчения поиска.
В свободное время чистить мусор из сохраненок и актуализировать заметки.
Это вполне меня устраивало, пока чат не стал слишком большим. Телега отлично ищет внутри чата, но все равно ориентироваться стало неудобно. Для некоторых тематичных вещей я создавал отдельные приватные каналы, некоторые объединял в отдельную папку внутри telegram, и как-то с этим жил. Например, с супругой есть общий чат со сканами разных документов. Тоже закрепленный, чтобы был всегда под рукой. Очень выручает во всяких непредвиденных бюрократических ситуациях.
Типичный кейс использования списков в telegram - список покупок перед походом в магазин. Пишу в сохраненках одно сообщение со списком, каждый пункт с новой строки. В магазине редактирую это сообщение и стираю то, что уже положил в корзину. Редактировать и стирать сообщения не очень удобно, тк надо тыкать много и часто, а ты в движении и с корзиной. Зато все внутри телеги - всегда под рукой, никаких лишних приложений! И это я менять не собирался.
Коротко о боте для чек-листов
Я создал бота осенью 2022 года. Сначала очень простого. Потом появились пользователи. Они рассказывали, чего им не хватает, а я доделывал это. Спустя полгода бот стал уметь достаточно, чтобы закрыть основные боли пользователей и конечно мои.
Для того, чтобы создать чеклист, не нужно вводить никаких странных команд, как это принято в других telegram-ботах. Просто пишешь сообщение с названием чеклиста боту, он его удаляет (чтобы чат оставался чистым) и присылает в ответ ссылку на чек-лист, который открывается в специальном окошке внутри телеграм. И там, внутри этого окошка, уже можно добавлять пункты чек-листа с удобными элементами управления. Можно отправить боту в чат сразу несколько строк, тогда он будет считать первую строку названием, а остальные непустые строки сразу внесет как пункты к этому чек-листу.
Итак, кратко, что на текущий момент умеет бот:
создавать пустые и предзаполненные чек-листы, удалять и переименовывать их
добавлять, редактировать и удалять пункты в них;
менять порядок пунктов в списке;
очищать чек-листы полностью или удалять только отмеченные пункты;
ставить напоминания на пункты чек-листа или на весь чек-лист целиком;
копировать содержимое чеклиста в буфер или присылать текстом в чат;
делиться чек-листом по ссылке и настраивать права доступа к чек-листу, которые будут доступны пользователям по ссылке;
работать в inline-режиме для быстрой отправки ссылки на чеклист через чаты и каналы.
У пользователей большие запросы, и в одиночку я не очень быстро могу разрабатывать новые функции, но стараюсь постоянно улучшать бота. Например, только недавно добавил изменение порядка пунктов внутри чеклиста. Для программиста задача довольно типичная. Но свободного времени всегда мало. Тем не менее стараюсь регулярно работать над ботом небольшими итерациями.
Какие кейсы решаются через бота
Вернемся к базовому кейсу - список для похода за продуктами.
Как правило люди в магазинах покупают одни и те же продукты. Некоторые продукты чаще, некоторые реже.
Для начала можно составить один список перед походом в магазин и дополнять его по мере необходимости.
В магазине отмечаем купленные товары по мере того, как кладем их в корзину/тележку. Для этого больше не надо редактировать сообщение в сохраненках. Просто тыкаем на пункт списка.
Перед тем, как снова пойти в магазин, проходим по списку и делаем неотмеченными позиции, которые снова нужно будет купить.
Это довольно удобно, так как может сэкономить вам время и силы на составление нового списка, в котором вы что-то можете забыть.
Обычно при добавлении новых пунктов список все равно не становится слишком большим, чтобы в нем было трудно сориентироваться.
Тем не менее, если список разросся, то можно разбить его на несколько списков. Например, по регулярности покупок: отдельный список покупок к событию (например, празднику, где нужны всякие салаты), отдельный список для продуктов с высокой частотой покупки и низким сроком годности (молоко, яйца, сметана, хлеб), отдельный список для продуктов, которые покупаем реже (крупы, приправы, нескоропортящиеся овощи вроде картофеля).
Кажется, что это одна из самых подробных инструкций, как ходить в магазин =). Давайте перейдем к более сложным кейсам.
Getting Things Done (GTD)
Об этом кейсе использования мне рассказал один из пользователей бота Рустам. Подробнее о методе https://habr.com/ru/articles/599391/.
GTD подразумевает использование таск-менеджеров, но Рустам подумал, что можно запилить это все в telegram. Не через канал, и не бот, а именно чат-группу, потому что в чатах появилась такая фича как темы (топики). И из темы в тему можно переставлять задачи. Темы можно называть по разному - СЕГОДНЯ, ЗАВТРА, КОГДА-НИБУДЬ и т.д.
Рустаму не хватало напоминаний в этой системе и чек листов. Напоминания он реализовал через стороннего бота, так как отложенные сообщения не работают внутри тем чат-группы. А вот чек листы через моего бота. На тот момент telegram еще не поддерживал открытие webapp приложений по ссылке, поэтому Рустаму приходилось отдельно заходить в бота и переключаться между темами чат-группы. Когда telegram доработал эту технологию, то ссылки на чек-листы стало можно оставлять прямо в нужных темах чат-групп.
Тем не менее, если мы гонимся за сверхпродуктивностью, то опытные прокрастинатологи говорят, что telegram - это не про продуктивность. Слишком много отвлекающих факторов. И советуют ставить отдельные приложения для управления чек-листами и списками дел. Но я не настолько упорен в этой борьбе, и удобство telegram перевешивает.
Ситуационные списки
А этот кейс про то, как я перестал забывать вещи. У меня есть несколько чек-листов со списком вещей для определенных мероприятий:
для похода на тренировку (форма, сменное белье, вода, пропуск и т.д.);
для командировки (одежда, документы, техника, средства гигиены и т.д.);
задачи для ремонта (купить обои, договориться с плиточником и т.д.);
для отдыха в конкретной стране (какие места и экскурсии посетить).
Когда я завел список для похода в тренажерный зал, то супруга надо мной подшучивала - неужели нельзя запомнить, что нужно взять с собой. Конечно можно! И обычно так и происходит. Но раз в 1-2 месяца все равно что-то забываешь. Я в разное время забывал чистое белье, воду, полотенце, форму, наушники. После того, как начал сверяться со списком перед выходом из дома - проблема исчезла.
Если все таки хочется испытать свою память и обойтись без списка - то сначала собираю вещи по памяти. Но потом все равно сверяюсь со списком, чтобы убедиться, что ничего не забыл.
Если же говорить о командировках или отпусках, то эти события происходят не регулярно. И тут вероятность что-то забыть сильно выше, чем при походе в спортзал. Поэтому в таких ситуациях списки очень полезны.
Однажды в статье на ТЖ я прочитал, что кому-то не хватает стандартных ситуационных списков. Например, что взять в аптечку при поездке в другую страну/на дачу и т.д. Функциональность бота уже позволяет делиться списками между пользователями прямо по ссылке. И я думаю о том, чтобы завести подобный раздел в будущем.
Долгоживущие списки
Если не вдаваться в подробности о том, чем чек-листы отличаются от списков дел, то можно выделить пару основных критериев:
Список дел обычно составляется на один раз, а чек-лист может включать повторяющиеся, регулярные активности.
Пункты чек-листа обязательны и выстроены в строгой последовательности выполнения. А пункты списка можно перенести, поменять очередность, либо совсем не выполнять.
Мой бот, как я считаю, является довольно общим инструментом, через который можно вести и чек-листы и списки. Как именно работать с созданным листом - решать пользователю.
Поэтому кроме списков продуктов или вещей к определенной ситуации у меня есть такие списки как:
фильмы, которые надо посмотреть;
книги, которые надо прочитать;
цели на год (в декабре они могут перерасти в список итогов года);
списки улучшений, которые нужно реализовать в боте и других проектах.
Если говорить о “трушных” чек-листах, у меня есть несколько технических инструкций для развертывания и настройки программ. Но в основном я использую бота для работы именно со списками.
Регулярные задачи
Есть ряд вещей, которые необходимо делать регулярно. Например, еженедельная уборка в доме. Одно время мы с супругой распланировали в какой из дней кто из нас выполняет какие активности по уборке. Набросали расписание прямо на бумаге и приклеили к холодильнику. Честно говоря, хватило меня в лучшем случае на месяц.
Некоторые пользователи бота просили добавить оповещения о пунктах списка или о списке целиком. В простом виде я добавил эту возможность. Но самое главное, чего не хватает - это ставить повторяющиеся оповещения (раз в день/по выходным/в определенное число месяца). Напоминания о ежедневных делах реально востребованная функция. Многие также создают себе списки на каждый день, указывая в названии дату. Вероятно, таким образом замещая, календари и события. Логичный шаг - дать пользователям автосоздание списка по расписанию, автоматический перенос невыполненных пунктов в новый список, ну и, как минимум, возможность задавать периодичность оповещений. В моем боте эта функциональность пока что в планах. Но если у кого-то есть интересный опыт работы с регулярными задачами в telegram - делитесь, интересно было бы узнать о нем!
В заключении
Мой довольно простой бот теперь стал удобным помощником в повседневной жизни. Некоторые пользователи оставляют запросы на улучшения, и я стараюсь постоянно дорабатывать его функциональность. Также меня очень мотивирует любая обратная связь, особенно рассказы о том, как бот сэкономил людям время или помог с решением проблемы. Если у читателей есть интересные кейсы применения списков и чек-листов, а также рецепты эффективной работы с telegram, то был бы рад услышать их!
Лига программистов
2K поста11.8K подписчиков
Правила сообщества
- Будьте взаимовежливы, аргументируйте критику
- Приветствуются любые посты по тематике программирования
- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества