Минимальный «hello world» telegram-бот

  • Tutorial
Здесь фокусник за четыре шага покажет как без боли и чтения документации собрать бот-оповещатель для 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'))

Similar posts

Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 17

    +2
    Эм? Вы серьёзно? Статья на хабр одной строкой? Твиттер был в соседней вкладке )
      0
      Просто время сейчас такое, что быстрее сделать что-то, чем понять что это и зачем оно тебе)
        0
        У меня почти такой же костыль есть, но немного поизящней. Натыкать всё его хочу на домашние пека на разные события планировщика.
      0
      А как в бессерверном варианте получить сообщения из канала на который бот подписан?
      Добавил бота в администраторы канала, писать бот может, но сообщения через getUpdates ему из канала не приходят не зависимо от того начинаются ли они с '/' имеют обращение к боту и значения команды /setprivacy.
      Никто не сталкивался?
        0
        Форвард сообщений из канала зато может делать
        +1
        Была бы очень интересна статья, в которой рассказывалось бы что это вообще такое — telegram боты, зачем они вообще нужны, как устроены, какие полезные задачи решают, в чем их киллер-фича (если она есть) по сравнению с другими технологиями.
          0
          https://geektimes.ru/post/274823/ На примерах всё становится ясно.
            +2
            Боты это как бы сервисы-собеседники в мессенджере. Подписался на него и например можно использовать, чтобы оперативно сообщить об опасности:
            ping yandex.ru -t || start https://api.telegram.org/bot<Bot_token>/sendMessage?chat_id=<chat_id>^&text=Мир%20В%20ОПАСНОСТИ
            +1
            Чтобы все заработало в батнике надо учесть следующее:
            Экранирование в батнике съест один крыжик в команде, поэтому их должно быть три
            start https://api.telegram.org/bot<Bot_token>/sendMessage?chat_id=<chat_id>^^^&text=Привет%20мир
            Файл bat надо сохранить как utf-8 без BOM и добавить команду chcp 65001, чтобы отсылаемое сообщение было с русским языком.
              +2
              Хотел сделать уведомления с сайта себе в Telegram, но было не удобно извлекать chat_id. Как к стати. Спасибо
                0
                А там какая-нибудь авторизация предусмотрена? А то «откройте ссылку» и все… пугающе просто
                  0
                  Ну в документации сказано, что если хотите безопасности — просто никому не говорите токен бота :|
                    0
                    а из протокола телеграма он не выковыривается?
                      0
                      Не знаю, насчет протокола телеграма, но любой снифер в сети покажет все что требуется — в протоколе https url и параметры не шифруются:
                      image
                        +1
                        Не вводите людей в заблуждение. HTTPS это тот же HTTP, но работающий внутри шифрованного канала SSL и TLS. Все параметры, передаваемые через query string так же шифруются. Для реализации TLS используется расширение SNI, позволяющее передавать имя хоста в открытом виде, для решения проблемы с ip и сертификатами.

                        Но! передавать чувствительные данные через query string чревато тем, что они могут оседать в логах сервера, и все!
                          0
                          Вы правы, что-то я недопонял в свое время в работе https, а скриншот это просто пример успешной атаки mtm с использованием прокси
                  0
                  классно. спасибо)) не думал что так просто

                  Only users with full accounts can post comments. Log in, please.