Вам нравится процесс ожидания? Когда необходимо сидеть и ждать, пока одна из статистик/аналитик/метрик загрузится…

«Но у нас все нормально, — ответите вы. — У нас крутые спецы, наши страницы грузятся за доли секунд, мы даже кешировать умеем.»

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

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

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

bot покажи мне статистику
……
снова думаем, опять ждем…

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

Все просто, нас спасет один метод:

editMessageText

Догадались? Да, все верно:

  1. Создаем новый чат и добавляем в него «нужных людей» и одного бота.
  2. Прикидываем в уме сколько метрик нам нужно выводить. С помощью метода sendMessage, создаем необходимое количество сообщений, сохранив где-то id сообщений из ответа этой команды.
  3. По крону/другой магией обновляем метрики, просто отредактировав сообщение методом editMessageText, где-то там у себя в бэкэнде.
  4. ??????
  5. Profit!

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

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

И не забудьте добавить «нужных людей», до того как создадите сообщение, так как обновленные данные будут им не доступны.

Примерно вот так это выглядит у нас:



Надеюсь хак, описаный в статье, кому-нибудь пригодится, всех благ!

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


  1. Hile
    13.04.2018 14:45

    integram.org

    вот эти парни давно юзают подобное, оч круто


  1. KorP
    13.04.2018 22:54
    +1

    Учитывая сегодняшнюю блокировку телеги — очень своевременная статья :)


    1. ElectroGuard
      14.04.2018 12:12

      То ли еще будет…


  1. xFFFF
    13.04.2018 23:20

    классная статья, попробую применить


  1. devpony
    14.04.2018 00:12
    +1

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


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


    Ещё можно нечаянно удалить сообщение и боту будет нечего обновлять.


    1. ivan386
      14.04.2018 07:40

      Решена проблема того что не надо слать команду для получения статистики и соответсвенно ждать её получения. И бот при этом не спамит сообщениями.


      Если бот будет без команды слать её постоянно новыми сообщениями то будут сыпаться уведомления о новых сообщениях от бота. Чат будет забит кучей сообщений от бота и их скорей всего ещё и листать прийдётся до последнего.


      1. akaluth
        14.04.2018 10:09

        Почему бы не воспользоваться Grafana?


  1. Mendel
    15.04.2018 12:53

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