Пишем telegram бота для мониторинга сайта на Golang – Telegram Group

Пишем telegram бота для мониторинга сайта на Golang

Идея появилась неожиданно, когда мы хотели забронировать домик для празднования дня рождения, но нужным нам дом не нашелся на известных всем booking или airb&b, и нормальной системы оповещения о бронировании не было. Так как я не определился с датами, а постоянно мониторить сайт желания и времени не было, я решил сделать небольшой хак и автоматизировать свои действия.

Стоит отметить, что это про проект just for fun, и я не являюсь экспертом в разработке систем мониторинга и т.п. Если вам также интересно прокачивать свои навыки в разработке, статья будет вам полезной.

Как работает.

Бот по заданному интервалу присылаем в чат фуллскрин нужной страницы.

Пишем код.

Для начала нужно найти библиотеку, которая могла имитировать Chromium и загружать сайты, немного погуглив, нашел chromedp(ссылки будут внизу).

Вся основная логика приложения будет находиться в директории pkg.

Создадим файл screenshot.go в директории pkg. Теперь при запуске функции Run и передачи в параметрах url нашего сайта, программа запустит эмулятор (в headless режиме) и сделает скриншот сайта, записав в переменную imageBuf картинку в байт-коде. Внутри функции screenshotTasks мы конфигурируем и переходим на страницу. Для того чтобы получить скриншот полной страницы мы эмулируем устройство.

Теперь будем подключать телеграмм:

Создадим файл telegram.go в директории pkg. В функцию SendPhoto передаем в качестве параметра картинку и конфиги бота, далее отправляем фото от имени бота в телеграм чат. Для того чтобы бот мог слать сообщения в чат, нужно добавить бота в группу.

Отлично, теперь наш бот может нам присылать скриншоты сайта, теперь осталось реализовать очередь задач и задать определенный интервал. Для этого будем использовать пакет gocron. Создадим файл job.go в директории pkg, функция RunJob принимает в качестве аргументов запускаемую функцию и конфиг. Таким образом наша функция будет запускаться с заданным интервалом.

Еще немного про запуск. Для парсинга yml кофига в приложении используется viper. Для запуска создадим директорию cmd и внутри файл main.go.

Сам файл конфигурации находится в директории config.

Итог.

Бот со своей задачей справляется отлично. Вы также можете запустить его, клонировав репозиторий и установив все как сказано в README.md. В дальнейшем, я думаю доработать код, чтобы он принимал несколько сайтов для мониторинга и обернуть в докер. Также если будем его часто использовать можно написать админку.

Ссылки.

Репозиторий с кодом:

https://github.com/Kuzmrom7/ping-go

Библоиотеки:

jasonlvhit/gocron

A currently maintained fork of this project has been migrated to https://github.com/go-co-op/gocron Disclaimer: we (the…

github.com

https://github.com/chromedp/chromedp

Ten articles before and after

Bot Telegram Untuk Membantu Sekolah/Kuliah Kamu – Telegram Group

Create a telegram bot – Telegram Group

Sending a message from Python to a Telegram chat: the simplest way – Telegram Group

Creating a Telegram Bot: Full Beginner’s Guide 2021 – Telegram Group

.Net Core Console Uygulması İle Telegram Botu Geliştirmek – Telegram Group

Пошаговый мануал: Как создать бота в Телеграм? – Telegram Group

Python ile Telegram Chatbot + Heroku – Telegram Group

TRX1 Dev Blog #1 (January 2021). TRX1’s January 2021 development report. – Telegram Group

How to code a recipe recommendation Telegram bot – Telegram Group

Telegram Bot Oluşturma. Telegram son günlerde ülkemizde ve… – Telegram Group