Как получать оповещения от Jupyter notebook в Telegram?

  • Tutorial

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


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


Достаточно написать в приват телеграм-пользователю @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:

Поделиться публикацией

Похожие публикации

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

    0
    И все в этой статье было неплохо, вот только валидный приватный токен мозолил глаза… :)
      +2
      Валидный приватный токен бота, созданного ровно ради этой статьи? Вот правда не жалко. :)
      +1
      Но ведь можно и без пакета. Если есть бот и токен, можно просто один wget
        0
        Можно попросить пример?
        Если действительно так, то попробую закинуть задачу в cron, чтобы сервер слал алерт в случае большого la.
        До этого смущала необходимость ставить дополнительные пакеты на прод-сервера.
          0
          curl -i -X GET https://api.telegram.org/bot$API_KEY/sendMessage?chat_id=$CHAT_ID&text=$SOME_TEXT
            0
            отправить адресату 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=тут мой текст»
              0
              Спасибо за дополнение. Но пока
              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"}


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

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

                  Надо будет маны покурить: core.telegram.org/bots/api
                    +1
                    Следующая последовательность действий привела к успеху.
                    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
                      0
                      Спасибо, воспроизвёл. Есть нюанс: это сообщение приходит именно в группу, а не в приват от бота. Чтобы группу создать, нужен ещё один человек, а не бот. (у меня не получилось в десктопном клиенте создать группу только со мной и ботом)
                        0
                        Если вы хотите в приват, а не в группу, то шлите не в группу а просто сразу в личку.
                        Я честно говоря не очень понимаю проблему. Я просто зарегистрировал бота, и просто послал на свой ID сообщение. И не очень понимаю как воспроизвести вашу проблему…
              0
              /usr/bin/wget -qs «api.telegram.org/bot$API_TOKEN/sendMessage?chat_id=$CHAT_ID&parse_mode=html&text=$MSG» 2>&1
                0
                Я уже больше года использую Alarmerbot. Ничего ставить не надо, просто curl'ом шлю запросы.
                curl "https://alarmerbot.ru/?key=your_key&message=I love telegram bots"
                
                0
                А это как?
                0
                del
                  0
                  Почему-то он каждое слово отдельным сообщением отправляет, пришлось пробелы заменить на нижние подчёркивания.

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое