Некоторые мессенджеры, такие как Telegram, иногда предоставляют API, который можно использовать для создания бота. Боты — это полезная в хозяйстве вещь. Например — хороший способ взаимодействия с приложениями, работающими на вашем домашнем сервере, без заморочек (в плане безопасности) с открытием директорий, проброса и подобной нездоровой фигни. Данный тип ботов легко написать, и они очень универсальны. В этой статье я покажу, как создать бота с помощью Python и Telegram.
Еще по теме: Взлом Телеграм и как от этого защититься
Создание бота с помощью Python и Telegram
Недавно мне пришлось подавать документы на визу, а чтобы записаться на прием, нужно зайти на правительственный сайт и постоянно мониторить появление свободных мест. В этом деле надо быть шустрым, чтобы успеть, так как квоты разлетаются, как горячие бабушкины пирожки.
Поэтому я решил написать бота, который перемещается по формам каждые 10 минут и в случае появления изменений отправляет мне сообщение в Telegram.
Бот состоит из двух частей:
- Код для взаимодействия с Selenium WebDriver.
- Оповещения об изменениях через Telegram.
Для начала нужно скачать с сайта Selenium WebDriver один драйвер для браузера:
Затем используем библиотеку Splinter, которая абстрагирует взаимодействие с драйвером.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
from splinter import Browser with Browser() as browser: # Visit URL. browser.visit("http://www.google.com") # Find and fill out the search form. browser.find_by_name('q').fill('splinter') # Find and click the 'search' button. button = browser.find_by_name('btnK').click() # Check for result on the page. if browser.is_text_present('splinter.readthedocs.io'): print("Yes, the official website was found!") else: print("No, it wasn't found...") |
Чтобы запустить код, сначала запустите ранее загруженный драйвер, а затем запустите приложение Python.
Теперь, когда у нас есть скрипт, который мониторит изменения на сайте, нам нужен способ получения уведомлений. Чтобы создать бота Telegram, нам понадобится токен. Для получения токена воспользуемся ботом BotFather.
После отправления команды /newbot, BotFather предложит придумать имя бота, а затем предоставит токен.
Здесь я обернул библиотеку python-telegram-bot в класс только для того, чтобы при необходимости было проще перейти на другое решение, но вы можете пропустить это и использовать библиотеку напрямую.
1 2 3 4 5 6 7 8 9 10 11 12 |
import telegram class Telegram: def __init__(self, token: str): self.bot = telegram.Bot(token=token) self.offset = 0 def send(self, chat_id, message): self.bot.send_message(chat_id=chat_id, text=message) |
Добавьте бота в группу.
Ссылка для получения обновлений бота:
1 |
https://api.telegram.org/bot/getUpdates |
Пример:
1 |
https://api.telegram.org/bot123456789:jbd78sadvbdy63d37gda37bd8/getUpdates |
Найдите объект chat:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
{ "update_id": 8393, "message": { "message_id": 3, "from": { "id":7474, "first_name":"AAA" }, "chat": { "id":, "title":"" }, "date":25497, "new_chat_participant": { "id":71, "first_name":"NAME", "username":"YOUR_BOT_NAME" } } } |
Мы можем отправлять сообщения с помощью своего бота, но мы также можем получать сообщения. И это открывает широкий спектр возможностей для различных интересных проектов. Используя Telegram в качестве моста для связи с вашими приложениями, вам не нужно предоставлять их напрямую в Интернет или иметь дело с пробросом портов и изменениями IP или динамической настройкой DNS.
Кстати, не так давно, я написал небольшого бота, который слушает команду /lotto. Затем бот отвечает случайно сгенерированными номерами лотереи. Поэтому я оставил бота работающим в контейнере Docker и мог взаимодействовать с ним с помощью мобильного телефона.
Создавать ботов — интересное занятие. В данной статье для создания бота я использовал Python и Telegram, но в прошлом я также использовал Slack bot API для взаимодействия с домашней сигнализацией.
РЕКОМЕНДУЕМ: