Владимир Зарыпов (krre31) wrote,
Владимир Зарыпов
krre31

Categories:

Океан. Telegram Bot

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

Сперва для этой цели я рассматривал обычные Telegram-каналы. Плюс в том, что достаточно отправить одно сообщение, и его получат все. Минус - все, кто подписался на канал, видят других подписавшихся. Я не нашёл  опиции, которая могла бы скрыть от нас этот список, поэтому каналы не подошли.

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

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

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

А теперь расскажу о том, как этим чудом враждебной техники пользоваться.

Переходим на страницу справки в Океане, в раздел Подписка на уведомления о новых манделах через Telegram Bot. Там будет ссылка Открыть Telegram для подписки. Вторая ссылка ведёт на эту статью, которую вы сейчас читаете.

Открываем эту первую ссылку и, если у вас установлен Telegram, то попадаем на экран приветствия. Показываю на примере десктопной версии.

Нажимаем кнопку ЗАПУСТИТЬ. При этом автоматически выполнится команда /start. В течение 10 мин вам придёт уведомление, что вы успешно подписаны на рассылку. Если запустить команду /stop, то в течение 10 мин придёт сообщение, что вы отписаны от рассылки, и сервер перестанет спамить вашу "телегу" всякими ненужными манделами.

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

Я тут описал много всякой технической ерунды, напугал какими-то таймерами, но на самом деле они касаются только двух команд: /start и /stop. Сами уведомления о новых манделах будут приходить сразу, без всяких задержек. Потому что это запрос от моего сервера к серверу Telegram.

Если вы забыли, какой командой можно подписаться или отписаться, то эта же инфа находится в окне "Информация о боте".

И, наконец, как будут выглядеть сами уведомления. Сейчас я сделаю тестовую манделу, и вы всё увидите собственными глазами.

Как бы всё понятно. Переходите по ссылке прямо из "телеги" и попадаете в манделу на сайте.

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

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

Нужны ли уведомления о комментариях через Telegram Bot?

Да, нужны
1(33.3%)
Нет, не нужны
2(66.7%)
Вообще ничего не нужно
0(0.0%)

Tags: океан
Subscribe

Posts from This Journal “океан” Tag

  • Океан. Камбэк

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

  • Океан. Блэкаут

    Выключил сервер. Устал читать ругань и ненависть, которая льётся на сайте бесконечным потоком. Уже давно не обсуждают манделы и редко добавляют…

  • Океан. Манделы пользователя

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

  • Post a new comment

    Error

    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments