Проект: Notion Page Bot. Телеграм бот для ускорения работы с mr. N  Публичный пост
18 марта 2021     1384   
Notion Page Bot. Телеграм бот для ускорения работы с mr. N

Привет!
Меня зовут Игорь и я айтишник без денег индихакер.
Хочу представить вам свой проект:

Бот для Телеграма Notion Page Bot, который работает как быстрый интерфейс для страницы в Ноушене. Т.е. пересылает туда все входящие сообщения.

Инструкция:

  1. Расшариваете страничку на эмейл бота
  2. Скидываете ссылку к нему в чат.

Всё! Вы превосходны!
Теперь всё что отправится роботу - будет сразу переслано в Ноушен.

Фичи:

  1. Markdown для форматирования. (Заголовки, буллет-поинты, выноски)
  2. Можно добавить несколько страниц, сделав несколько чатов.
  3. Лёгкий интерфейс, без лишних действий.

Зачем?

  1. Совместить удобство ввода Телеграма и гибкость Ноушена.
  2. Делать записи на ходу и в дороге. В моменты когда искать страницу в приложении не удобно.
  3. Делать записи оффлайн.
  4. Организовать единый инбокс для смартфона и десктопа

Как появилась идея?

Заглянем чуть в историю

На самом деле я до последнего момента не понимал фишку чат-ботов. Ну блин, люди еще в 90-х согласились что формат текстового общения с машиной (это же консоль, Карл!) хуже чем визуальный интерфейс. Зачем снова вот это всё? Особенно меня бомбило когда боты начали появляться прямо НА САЙТАХ!

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

На это еще накладывается то, что приходится шизофренически притворяться что ты беседуешь с живым существом. "Привет, друг! Я бот Вильям. Как твои дела, как жена?".
Вы серьёзно?

И вообще ЧАТЫ! Я наивно думал что мы оставили их в прошлом. Если нужно отправить сообщение - ты шлёшь смс. Если нужно большое сообщение/картинку - открываешь приложение соц сети и высылаешь.

В момент когда Дуров решил делать мессенджер после ВКонтакте я подумал что его карьера закатилась и он начал сходить с ума.

Телеграм

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

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

Наши дни

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

После чего за минуту оформил в боте заявку и заветная дверка открылась.

Новая вера

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

Ну и, конечно же, этот опыт закрепился после нахождения в клубе. Через бота в можно плюсануть комент! Шок!

Похоже, всё наше представление о космических интерфейсах будущего (когда человек водит руками по 3д проекции) не реалистично. Возможно наше будущее - это всего лишь чатики с ботом. Разве что, общение станет голосовым. Хотя, подождите, это же Алекса? Хм. Вот будущее и наступило.

Так в чём проблема?

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

Но планирование и более детальные записи ведутся в Ноушене.

Проблема была в том, что каждый раз, когда нужно собрать мысли воедино, это даётся тяжело. Что-то записано в Телеге, что-то в Ноушене. А там где два места, там и третье появляется в виде заметок на телефоне и т.п.

Даже если просто на десктопе скопировать сообщения из Телеграма получается такие письмена, которые нужно править:

Решение

Тут, собственно, всё и сошлось. Со свежим ощущением, что боты - это не так уж зазорно, появилсь идея сделать копирование ботом сразу в Ноушен.

И чё, так можно было? Таки можно! При этом, нет необходимости давать доступ ко всему аккаунту. Достаточно просто расшарить нужную страничку с емейлом. Удобно.

Начало работы и сомнения

ps. Этот раздел будет технический. Если вы не получите удовольствия от перечисления тех. деталей можно идти к следующему.

Ввиду своей биологической склонности к индихакерству я всю жизнь менял технологии на которых работаю. Игры были с AS3 и C#. Cайты с RoR и PHP. Приложения со Swift. Система для управлением магазином с 1С.

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

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

Но, увы, для бота оказался нужен стек с Python, который, блин, я в своей жизни как раз, абсолютно обошел стороной.

Ну, думаю, ладно, посмотрю по-быстрому синтаксис языка, сложностей возникнуть не должно. За пару вечеров справлюсь.
А потом, понеслось...

Технологии

Дело в том, что я прям не умею программировать быстро. Мне надо чтобы была хоть какая-то архитектура и расширяемость на будущее.

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

И вот к голому Питону с телеграм библиотечкой добавился Django целиком. Какая-никакая защита тут есть: https://docs.djangoproject.com/en/3.1/topics/security/

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

Так добавился VDS от Hetzner.

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

Так добавился Docker.

Конфигурировать его оказалось не так просто для новичка. Бывало пытаешься выяснить почему не удаляется какой-нибудь volume из контейнера и рабочий день как корова слизала.

Короче вместо бота на пару дней, выучился полновесный стэк.

Благо есть клуб, где можно посмотреть в исходники спросить совета.

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

Но, overall, это было довольно приятное времяпровождение. =)

Фичи

1. Несколько страниц одновременно:

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

Телеграм подкинул для этого очень лаконичное решение. Бота можно добавить в приватную группу на 1 человека.
Удобство: Бот будет автоматом менять название чата, при отправке ему новой страницы:

Так это выглядит у меня. Несколько чатов в папке с иконкой:

Кстати, так совпало что сегодня появился отличный пост про организацию заметок Телеграме по такой же схеме. Можете ознакомиться для лучшего понимания. Удобно даже без бота.
https://vas3k.club/post/8982

2. Markdown для форматирования.

Далее, обратил внимание, что часто использую заметки для записи мыслей во-время прогулок с аудиокнигой. Стало понятно что надо добавить форматирование. В итоге такая запись в чате


превращается в такую красоту в Ноушене

3. Минимальность интерфейса

Сила брата в правде, а чата в скорости.

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

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

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

Бонус!

Урааа, бонус!

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

Да, прямо команды!

Таким образом какбы программировать бот.
Выглядит это так: "Прекрасное название | diary, at 16:00"

Сейчас работают такие команды:

  • upward - все новые сообщение будут записываться сверху. Удобно для "инбокса", чтобы не нужно было потом скролить вниз к последним записям.

  • diary - сообщения будут разделяться датами. Удобно для разных дневников. И вообще, полезно чтобы не превращать страницу в сплошную стену текста.

Чуть позже добавлю команду "at"

  • at 17:00 - бот каждый день будет присылать сообщение в 17:00 с напоминанием добавить запсь. Командой "at 17:00 12345" можно установить это напоминание только по будням.

Будущее

Пока тема таблиц Ноушена не раскрыта. Хочу сделать отдельного бота для этого. Он будет предлагать по очереди ввести данные в каждое из полей. И можно будет еще активнее его "программировать".

Например, если будет таблица с тремя полями "Настроение | at 10:00", "Настроение | at 15:00" и "Настроение | at 19:00", то бот трижды в нужное время будет спрашивать уровень настроения и добавлять ответы в соответствующую строку.

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

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

Каждый сможет задизайнить трекер своих самых экстравагантных привычек, наконец!

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

Цена

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

Аргументы в пользу платности:

  1. Частота использования. Да, бот - это небольшой сервис, но если пользователь будет его использовать как я - это, будет несколько раз в день. Поэтому даже мелкие недоработки, или проблемы интерфейса умножатся на количество раз. Также умножится и польза.
  2. Сохранность данных. Не всех устраивает ситуация, когда самые передовые ИИ с идеальной памятью и логическими связями, которые не снились Шерлоку Холмсу, копаются в личной информации. Если сервис оплачен, то можно рассчитывать, что разработчик будет стараться ответственно относиться к сохранности данных.

Предложение:

Первая 1000 сообщений бесплатно. Далее 1$ в месяц, или 15$ лайфтайм.

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

Я руководствуюсь принципом, что хорошо потратить деньги зачастую - выгоднее чем не потратить. Особенно если это касается оптимизации времени. 1$ - это стоимость общественного транспорта. Кажется никто не сомневается что потратить 1$ на транспорт лучше чем экономить и идти 40 минут пешком. Но с онлайн сервисами такое сопоставление пока не всегда очевидно.

Что хочу от клуба

  • Конечно же, приглашаю пользоваться и буду рад, если кому-то сервис будет полезен.
  • Также интересно ваше мнение про проект в целом и про идею из пункта "Будущее"
  • Спасибо за то что вы есть!

Ссыль: https://t.me/notion_inbox_bot
Во всех непонятных ситуациях с его работой- смело пишите мне в ТГ.

ps. Фух, это было 12175 знаков. 💎🚀👍

Связанные посты
11 комментариев 👇

Я думал помогает башни собирать...

  Развернуть 1 комментарий

@begor, я не понял комментария ( Капитанство в заголовке?

  Развернуть 1 комментарий

уже есть вот такое @thenotionbot
описание: https://t.me/ru_notion/17415

  Развернуть 1 комментарий

@birch, да, спасибо. Я его рассматривал.

Это бот как раз про заполенние таблиц, не про страницы.

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

  Развернуть 1 комментарий
Holovin, разработчик−дизайнер 19 марта в 06:00

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

  Развернуть 1 комментарий

@holovin, надеюсь что начав с костылей будет легче продвинуться в очереди на тест официального апи.

  Развернуть 1 комментарий

@igor-beaver, ну, в любом случае когда-нибудь они выкатят и я смогу сделать себе как «правильно» :)

  Развернуть 1 комментарий
Kirill Kubryakov, Frontend Web Developer 21 марта в 09:27

Интересно, надо будет попробовать.

Есть такой юскейс у меня. Будет ли с ним работать? Есть страница со списком что посмотрел/прочитал, каждая запись это отдельная страница, плюс есть тип и дата. Можно ли с каждым сообщением добавлять новую страницу в ту, к которой бот привязан? И можно ли как-то добавлять комментарий не к самой странице, а к вложенной странице? Надеюсь понятно объяснил )

  Развернуть 1 комментарий

@kirillku, если я правильно понял - на странице есть именно таблица со списком книг и уже в неё надо добавлять с помощью сообщений конкретные книги. Так же?
Если так, то пока бот с таблицами не работает, к сожалению, но следующая версия должна будет справляться с таким юзкейсом. )
Про комментарии - буду иметь ввиду. Пока не знаю получится ли

  Развернуть 1 комментарий

@igor-beaver, да, правильно, только у меня канбан доска как в трелло. Мне бы хватило что-то типа такого:

[[Война и мир]]
@today
Еще прочитал пару глав, очень интересно
  Развернуть 1 комментарий
Kirill Kubryakov, Frontend Web Developer 28 марта в 12:48

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

  Развернуть 1 комментарий

😎

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

Что вообще здесь происходит?


Войти  или  Вступить в Клуб