Рубрики
Без рубрики

Очистите Интернет с помощью Python и получайте обновления в Telegram

Короткая статья о том, как настроить telegram-бота и отправлять через него веб-сообщения.

Автор оригинала: Gergely Kovács.

Вступление

Это продолжение того, как и почему я создал простой скрипт веб-очистки, чтобы уведомлять нас о нашей любимой еде . В этой статье я описал, как кто-то может искать информацию в Интернете и получать оповещения по электронной почте, если определенное слово появляется на веб-странице.

В этой статье я опишу, что делать, если вы хотите получать обновления через Telegram, а не по электронной почте.

Если вы новичок в программировании на Python, вы также можете ознакомиться с этим постом о планировании: Как запускать и планировать сценарии Python на iOS Как запускать и планировать сценарии Python на Raspberry Pi

1. Постройте соскабливающую часть

В предыдущей статье я дал подробные пошаговые инструкции в разделе “Процесс создания скрипта веб-очистки” по этой теме, поэтому я не буду повторяться. Я просто хочу добавить, что в примере я создал оповещение о нашей любимой еде, но вы можете сканировать и отслеживать все виды информации. Курсы акций, новости, тенденции в социальных сетях, ключевые слова в различных лентах и т. Д. До тех пор, пока вы можете сделать выбор HTML на нем, он может быть очищен и отслежен.

2. Настройка Telegram

Чтобы публиковать оповещения в Telegram, лучший и самый простой способ-создать профиль бота и отправлять через него обновления.

Создать бота очень просто, вам просто нужно поговорить с… ботом под названием Botfather . После того, как вы начали общаться с ним в Telegram, отправьте команду /new bot . Botfather попросит вас назвать бота, а также определить имя пользователя. Имя может быть любым, но для имени пользователя вам придется придумать уникальное, которое никто раньше не использовал.

Здесь вы можете увидеть мою попытку, когда я создал и назвал бота для своего Raspberry Pi:

Скриншот 2019-02-04 от 21.03.38.png

Как вы можете видеть, Botfather также предоставляет токен HTML API (который я описал на своем скриншоте). Запишите его, так как он вам понадобится позже, когда вы будете реализовывать предупреждение в Python.

Если вы хотите внести изменения в своего бота, вы можете сделать это, отправив им команду /мои боты в Botfather. Вы сможете переименовать его, добавить описание и изображение профиля, сбросить маркер API и многое другое.

Скриншот 2019-02-04 в 21.17.29.png

Если вы хотите прекратить общение с Botfather, вы всегда можете отправить команду /cancel , и она завершит любое действие.

3. Реализуйте отправку обновлений на канал в Python

Хорошо, на данный момент у нас должен быть скрипт на Python, который соскребает что-то из Интернета, и зарегистрированный бот Telegram.

Следующий шаг – определить идентификатор канала , куда мы хотим отправлять обновления через нашего бота. Итак, прежде всего вам нужно выяснить, где вы хотите получать обновления:

  1. Должен ли бот отправлять сообщения только вам?
  2. Или на канал?
  3. Или другой человек в Telegram?

Случай 1 самый простой: просто откройте чат со своим ботом и отправьте ему любое сообщение. После этого откройте веб-браузер, вставьте этот URL-адрес и замените [ТОКЕН] своим уникальным токеном API бота.

https://api.telegram.org/bot[TOKEN]/getUpdates

Как только вы посетите этот URL-адрес, вы получите ответ JSON. В этом ответе найдите раздел, в котором говорится: "from":{"id": 123456789, ...

Номер после “id:” будет уникальным идентификатором вашего пользователя. Запишите его для последующего использования.

В случае № 2 вам сначала нужно пригласить бота на канал, где вы хотите публиковать обновления, и отправить ему сообщение, упомянув об этом. После этого вы сможете определить идентификатор канала так же, как и в случае 1.

В последнем сценарии (случай 3) вам нужно будет попросить другого человека найти вашего бота и отправить ему личное сообщение. Затем определите уникальный идентификатор этого человека таким же образом, как описано выше.

Хорошо, теперь у вас есть готовый бот (токен), и вы также знаете уникальный идентификатор канала, куда он должен отправлять обновления.

Следующим шагом является реализация метода отправки в вашем коде. Во-первых, соскоблите необходимую информацию и сохраните ее в строковой переменной. Опять же, если вы понятия не имеете, о чем я говорю, перейдите к моему предыдущему посту, где я даю подробное объяснение по этой теме . В этом примере я буду называть эту переменную Текст результата .

Затем добавьте эту строку кода:

requests.get("https://api.telegram.org/bot[TOKEN]/sendMessage?chat_id=[CHATID]&text={}".format(ResultText))

Удалите [ТОКЕН] и добавьте вместо него уникальный токен API вашего бота. Также удалите [ИДЕНТИФИКАТОР ЧАТА] и добавьте уникальный идентификатор канала, на который вы хотите отправлять обновления.

И у тебя в принципе все готово! Эта строка кода отправит Текст результата через вашего бота на определенный канал. Вот так просто!

Последнее, что следует учитывать, это то, что если вы хотите использовать специальные символы, приведенный выше код может привести к ошибке. Чтобы избежать этого, я рекомендую преобразовать ваш текст в удобный формат URL с помощью модуля urllib .

import urllib

ParsedRestultText = urllib.parse.quote_plus(ResultText)

И используйте это вместо Результирующего текста в своем коде. Таким образом, конечный результат будет выглядеть следующим образом:

requests.get("https://api.telegram.org/bot[TOKEN]/sendMessage?chat_id=[CHATID]&text={}".format(ParsedResultText))

Заключительные слова

Я надеюсь, что эта короткая статья дала вам представление о том, как Telegram-боты могут расширить ваши возможности по очистке веб-страниц. Это, конечно, был просто супер простой пример, вы можете делать гораздо более сложные вещи с ботами, например:

  • прослушивайте ключевые слова и выполняйте на их основе определенные действия
  • отображение уникальных клавиатур или кнопок меню и выполнение действий в зависимости от того, что было нажато

Обязательно ознакомьтесь с документацией по телеграммам здесь, если вы хотите создать более продвинутые решения: https://core.telegram.org/bots