Довольно просто. Нам понадобится свой телеграм-бот, один пакет и одна строчка кода
А результат будет таким:
Как создать бота?
Достаточно написать в приват телеграм-пользователю @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)
saboteur_kiev
09.10.2017 19:21+1Но ведь можно и без пакета. Если есть бот и токен, можно просто один wget
skymal4ik
10.10.2017 01:45Можно попросить пример?
Если действительно так, то попробую закинуть задачу в cron, чтобы сервер слал алерт в случае большого la.
До этого смущала необходимость ставить дополнительные пакеты на прод-сервера.kiba
10.10.2017 04:04curl -i -X GET https://api.telegram.org/bot$API_KEY/sendMessage?chat_id=$CHAT_ID&text=$SOME_TEXT
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=тут мой текст»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"}
Что делаю не так?saboteur_kiev
10.10.2017 13:11AmberGunso это группа или конкретный адресат?
Бота добавили предварительно в группу с правами участия?
У меня вышеуказанные команды взяты из живого работающего уже год крона. Проверьте еще раз по буквам название группы.AmberSP Автор
10.10.2017 13:44@AmberGunso — Адресат.
Пробовал менять на название группы «111» — это единственная группа, куда включён бот. права выставил, в том числе на отправку сообщений. Не помогает.
Надо будет маны покурить: core.telegram.org/bots/apiarmo
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
AmberSP Автор
13.10.2017 11:42Спасибо, воспроизвёл. Есть нюанс: это сообщение приходит именно в группу, а не в приват от бота. Чтобы группу создать, нужен ещё один человек, а не бот. (у меня не получилось в десктопном клиенте создать группу только со мной и ботом)
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
scor2k
10.10.2017 13:39Я уже больше года использую Alarmerbot. Ничего ставить не надо, просто curl'ом шлю запросы.
curl "https://alarmerbot.ru/?key=your_key&message=I love telegram bots"
sergei3000
10.10.2017 13:00Почему-то он каждое слово отдельным сообщением отправляет, пришлось пробелы заменить на нижние подчёркивания.
Tihon_V
И все в этой статье было неплохо, вот только валидный приватный токен мозолил глаза… :)
AmberSP Автор
Валидный приватный токен бота, созданного ровно ради этой статьи? Вот правда не жалко. :)