Довольно просто. Нам понадобится свой телеграм-бот, один пакет и одна строчка кода
А результат будет таким:


Как создать бота?


Достаточно написать в приват телеграм-пользователю @BotFather. Он выдаст список команд, которые понимает, но нас интересует /newbot


Надо будет указать имя бота ("человеческое") и его username (который потом будет доступен через @). В моём примере это "Лучший бот" и "habra_test_bot".



В ответе бота нас интересуют ссылка t.me/habra_test_bot и 2 строчки:


Use this token to access the HTTP API:

442932741:AAGIBZeHev3I5d0S_cWszRYKMw898Ft9uac

Пока просто запомним, что вот он, токен.


Чего ещё не хватает?


Не хватает нам пакета telegram-send. Ставится он через pip. В консоли надо выполнить


pip install telegram-send


Collecting telegram-send
Using cached telegram_send-0.18-py2.py3-none-any.whl
Requirement already satisfied: appdirs in c:\python\anaconda3\lib\site-packages (from telegram-send)
Requirement already satisfied: python-telegram-bot>=5.0 in c:\python\anaconda3\lib\site-packages (from telegram-send)
Requirement already satisfied: colorama in c:\python\anaconda3\lib\site-packages (from telegram-send)
Requirement already satisfied: certifi in c:\python\anaconda3\lib\site-packages (from python-telegram-bot>=5.0->telegram-send)
Requirement already satisfied: future>=0.16.0 in c:\python\anaconda3\lib\site-packages (from python-telegram-bot>=5.0->telegram-send)
Installing collected packages: telegram-send
Successfully installed telegram-send-0.18

Далее требуется настроить telegram-send, чтобы он знал, куда писать. Для этого снова в консоли:


telegram-send --configure


Вот тут нам и понадобится токен, который сообщил @BotFather (его надо будет отправтить в ответ на приглашение в консоли):


Talk with the BotFather on Telegram (https://telegram.me/BotFather), create a bot and insert the token
[35m> [0m442932741:AAGIBZeHev3I5d0S_cWszRYKMw898Ft9uac
Connected with habra_test_bot.

Please add habra_test_bot on Telegram (https://telegram.me/habra_test_bot) and send it the password: 43165

А вот пароль (43165) надо будет отправить в приват нашему боту. Для этого надо перейти по ссылке от всё того же @BotFather (t.me/habra_test_bot) и нажать START:




После этого для отправки сообщения надо в Jupyter Notebook обратиться через ! к telegram-send:

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


  1. Tihon_V
    09.10.2017 17:51

    И все в этой статье было неплохо, вот только валидный приватный токен мозолил глаза… :)


    1. AmberSP Автор
      09.10.2017 17:57
      +2

      Валидный приватный токен бота, созданного ровно ради этой статьи? Вот правда не жалко. :)


  1. saboteur_kiev
    09.10.2017 19:21
    +1

    Но ведь можно и без пакета. Если есть бот и токен, можно просто один wget


    1. skymal4ik
      10.10.2017 01:45

      Можно попросить пример?
      Если действительно так, то попробую закинуть задачу в cron, чтобы сервер слал алерт в случае большого la.
      До этого смущала необходимость ставить дополнительные пакеты на прод-сервера.


      1. kiba
        10.10.2017 04:04

        curl -i -X GET https://api.telegram.org/bot$API_KEY/sendMessage?chat_id=$CHAT_ID&text=$SOME_TEXT


      1. saboteur_kiev
        10.10.2017 10:35

        отправить адресату yyyyy:
        wget «api.telegram.org/botxxxxxx:xxxxlongtokenxxx/sendMessage?chat_id=yyyyy&text=тут мой текст»

        отправить в групповой чат group_name (бота нужно предварительно добавить в нее)
        wget «api.telegram.org/botxxxxxx:xxxxlongtokenxxx/sendMessage?chat_id=@group_name&text=тут мой текст»


        1. AmberSP Автор
          10.10.2017 11:37

          Спасибо за дополнение. Но пока
          https://api.telegram.org/bot442932741:AAGIBZeHev3I5d0S_cWszRYKMw898Ft9uac/sendMessage?chat_id=@AmberGunso&text=тут%20мой%20текст

          {"ok":false,"error_code":400,"description":"Bad Request: chat not found"}


          Что делаю не так?


          1. saboteur_kiev
            10.10.2017 13:11

            AmberGunso это группа или конкретный адресат?
            Бота добавили предварительно в группу с правами участия?

            У меня вышеуказанные команды взяты из живого работающего уже год крона. Проверьте еще раз по буквам название группы.


            1. AmberSP Автор
              10.10.2017 13:44

              @AmberGunso — Адресат.
              Пробовал менять на название группы «111» — это единственная группа, куда включён бот. права выставил, в том числе на отправку сообщений. Не помогает.

              Надо будет маны покурить: core.telegram.org/bots/api


              1. armo
                11.10.2017 00:36

                Следующая последовательность действий привела к успеху.
                1. Создать публичную группу и задать ей Link: t.me/abrakadabra_example
                2. Добавить в группу бота
                3. В API sendMessage использовать значение параметра: chat_id=@abrakadabra_example
                4. В респонсе вернется chat ID: "chat":{"id": -12345678
                5. Теперь группу можно сделать приватной и использовать ID из шага 4 в параметре метода, но уже без @: chat_id=-12345678


                1. AmberSP Автор
                  13.10.2017 11:42

                  Спасибо, воспроизвёл. Есть нюанс: это сообщение приходит именно в группу, а не в приват от бота. Чтобы группу создать, нужен ещё один человек, а не бот. (у меня не получилось в десктопном клиенте создать группу только со мной и ботом)


      1. xqwertx
        10.10.2017 11:25

        /usr/bin/wget -qs «api.telegram.org/bot$API_TOKEN/sendMessage?chat_id=$CHAT_ID&parse_mode=html&text=$MSG» 2>&1


      1. scor2k
        10.10.2017 13:39

        Я уже больше года использую Alarmerbot. Ничего ставить не надо, просто curl'ом шлю запросы.

        curl "https://alarmerbot.ru/?key=your_key&message=I love telegram bots"
        


    1. sergei3000
      10.10.2017 11:25

      А это как?


  1. saboteur_kiev
    10.10.2017 10:34

    del


  1. sergei3000
    10.10.2017 13:00

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