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

  1. Пройдите регистрацию в telegram
  2. Получите идентификатор нового бота (далее <Bot_token>): обратитесь к боту @BotFather c требованием создать нового бота (команда /newbot)
  3. Получите Идентификатор беседы с ботом (далее <chat_id>):
    • Откройте диалог со своим созданным ботом и напишите ему произвольное сообщение
    • Откройте в браузере ссылку, заменив <Bot_token> на полученный идентификатор от @BotFather https://api.telegram.org/bot<Bot_token>/getUpdates
    • В полученном json-ответе найдите значение в параметре result->message->chat->id, это и есть <chat-id>
  4. Откройте браузер и перейдите по ссылке, заменив <Bot_token> и <chat_id> на свои данные
    https://api.telegram.org/bot<Bot_token>/sendMessage?chat_id=<chat_id>&text=Привет%20мир

Тем самым Вы получите сообщение от бота на все свои устройства с клиентом telegram.

Последний вызов можно использовать в bat-файле или консоли или раздать друзьям не имеющим telegram и пишущим с умного утюга ( но только очень хорошим друзьям так как <Bot_token> конфиденциальная информация вообще-то).

Варианты использования
Заменив <Bot_token> и <chat_id> на свои данные, получим:
Пример для консоли:
ping yandex.ru -t || start https://api.telegram.org/bot<Bot_token>/sendMessage?chat_id=<chat_id>^&text=Мир%20В%20ОПАСНОСТИ

Пример для bat-файла, сохраненного как utf-8 без BOM и выполняющегося из taskschd.msc раз в 2 недели:
chcp 65001
start https://api.telegram.org/bot<Bot_token>/sendMessage?chat_id=<chat_id>^^^&text=Cходи%20в%20спортзал


Напомнинаю вариант запуска разового задания из консоли:
at 19:47 c:\temp\go_home.bat

Пример на python:
import urllib2
get = urllib2.urlopen('https://api.telegram.org/bot<Bot_token>/sendMessage?chat_id=<chat_id>&text=Без%20python%20не%20кошерно'.encode('UTF-8'))

Поделиться с друзьями
-->

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


  1. shpaker
    22.07.2016 12:21
    +2

    Эм? Вы серьёзно? Статья на хабр одной строкой? Твиттер был в соседней вкладке )


    1. irony_iron
      22.07.2016 17:33

      Просто время сейчас такое, что быстрее сделать что-то, чем понять что это и зачем оно тебе)


      1. shpaker
        22.07.2016 22:04

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


  1. Dimano
    22.07.2016 12:25

    А как в бессерверном варианте получить сообщения из канала на который бот подписан?
    Добавил бота в администраторы канала, писать бот может, но сообщения через getUpdates ему из канала не приходят не зависимо от того начинаются ли они с '/' имеют обращение к боту и значения команды /setprivacy.
    Никто не сталкивался?


    1. shpaker
      22.07.2016 21:47

      Форвард сообщений из канала зато может делать


  1. NeoCode
    22.07.2016 12:29
    +1

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


    1. Find_the_truth
      22.07.2016 12:40

      https://geektimes.ru/post/274823/ На примерах всё становится ясно.


    1. irony_iron
      22.07.2016 12:42
      +2

      Боты это как бы сервисы-собеседники в мессенджере. Подписался на него и например можно использовать, чтобы оперативно сообщить об опасности:
      ping yandex.ru -t || start https://api.telegram.org/bot<Bot_token>/sendMessage?chat_id=<chat_id>^&text=Мир%20В%20ОПАСНОСТИ


  1. irony_iron
    22.07.2016 13:17
    +1

    Чтобы все заработало в батнике надо учесть следующее:
    Экранирование в батнике съест один крыжик в команде, поэтому их должно быть три
    start https://api.telegram.org/bot<Bot_token>/sendMessage?chat_id=<chat_id>^^^&text=Привет%20мир
    Файл bat надо сохранить как utf-8 без BOM и добавить команду chcp 65001, чтобы отсылаемое сообщение было с русским языком.


  1. dmx102
    22.07.2016 13:36
    +2

    Хотел сделать уведомления с сайта себе в Telegram, но было не удобно извлекать chat_id. Как к стати. Спасибо


  1. galaxy
    22.07.2016 18:33

    А там какая-нибудь авторизация предусмотрена? А то «откройте ссылку» и все… пугающе просто


    1. irony_iron
      22.07.2016 18:47

      Ну в документации сказано, что если хотите безопасности — просто никому не говорите токен бота :|


      1. galaxy
        22.07.2016 18:58

        а из протокола телеграма он не выковыривается?


        1. irony_iron
          22.07.2016 19:09

          Не знаю, насчет протокола телеграма, но любой снифер в сети покажет все что требуется — в протоколе https url и параметры не шифруются:
          image


          1. dmx102
            22.07.2016 22:06
            +1

            Не вводите людей в заблуждение. HTTPS это тот же HTTP, но работающий внутри шифрованного канала SSL и TLS. Все параметры, передаваемые через query string так же шифруются. Для реализации TLS используется расширение SNI, позволяющее передавать имя хоста в открытом виде, для решения проблемы с ip и сертификатами.

            Но! передавать чувствительные данные через query string чревато тем, что они могут оседать в логах сервера, и все!


            1. irony_iron
              24.07.2016 18:19

              Вы правы, что-то я недопонял в свое время в работе https, а скриншот это просто пример успешной атаки mtm с использованием прокси


  1. danpan
    22.07.2016 19:17

    классно. спасибо)) не думал что так просто