Skip to content

monitoring_web_resource_bot - Telegram bot для мониторинга доступности web ресурсов в интернете.

Notifications You must be signed in to change notification settings

BKSLab/monitoring_web_resource_bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

monitoring_web_resource

monitoring_web_resource - Telegram bot для мониторинга web ресурсов на предмет их доступности для пользователей

Примечание! - проект находится в стадии разработки.

Какую проблему решает бот?

Первоначально проблема возникла там, где я ее не ждал.
У меня есть небольшой сайт, на котором я публикую статьи про работу над своими pet-проектами, делюсь своими размышлениями при решении задач на LeetCode и пока немного пишу про цифровую доступность.
Сайт работает на CMS WordPress и размещен на виртуальном хостинге от Timeweb.
И вот в один прекрасный вечер я решил подготовить новую статью для публикации, и... сайт мой оказался недоступен.
Никаких проблем в личном кабинете Timeweb не было обнаружено. После проведения небольшого расследования и прогона сайта и IP адреса по реестрам Роскомнадзора было обнаружено, что IP адрес находится в реестре ресурсов, доступ к которым был заблокирован. Учитывая, что хостинг этот виртуальный, на данном IP адресе находилось около двух с половиной тысяч различных сайтов, в том числе и мой. Правда, через непродолжительный промежуток времени сайт снова стал доступен. Позже такая ситуация повторилась несколько раз, причем только через моего интернет-провайдера.
Раз есть проблема - значит нужно ее решать, причем решать быстро.

Правильное решение проблемы

Как ни крути, самым верным решением проблемы будет перенос сайта на выделенный сервер с собственным IP адресом. Такой сервер у меня есть, на нем размещен мой Telegram bot Работа для всех. Конечно, я так и сделаю, когда появится свободное время и желание заняться переездом. Но пока нет ни того ни другого, поэтому мне пришла другая идея!

Решение, которое саму проблему не решает, но позволяет контролировать работу сайта

Я сейчас готовлюсь к поиску работы, поэтому стараюсь больше времени уделять изучению (повторению ранее пройденного материала) языка Python
и его возможного практического применения. Конечно, курсы на Stepik - это здорово, но без практики - это впустую потраченное время.
Вот тут мне и пришла идея написать небольшой Telegram бот, который с определенной периодичностью будет отправлять GET запрос на сайт и, если код статуса ответа не равен 200, сообщать мне об этом. Если код 200, то никаких сообщений бот не направляет.

А зачем изобретать велосипед, когда такие ресурсы в Интернете уже есть?

Согласен, что сервисы по мониторингу работы сайтов есть, в том числе и бесплатные. Но моя основная цель при работе над этим проектом - получить практический опыт, пройдя весь путь от идеи до работающего продукта.
Кроме того, есть еще одна похожая задача, решить которую может помочь этот бот. После того как я запустил своего первого Telegram бота, возник вопрос, как контролировать его работу.
Сейчас я это делаю "руками", но считаю это временным и немасштабируемым решением. Придется поломать голову над решением этой задачи, но это будет достойно второй версии сервиса.

Ещё пару слов про бота

Основная логика работы бота будет достаточно простой. Пользователь может добавлять и удалять web ресурсы, которые он хотел бы отслеживать. Для добавления ресурса пользователь отправляет боту url адрес формата "https://touch-it.ru/". После валидации сайт будет добавлен в базу вместе с id пользователя.
Пока пользователь не будет иметь возможность самостоятельно устанавливать периодичность опроса сайта. Ресурсы будут проверятся один раз в 3 часа. Возможно, что далее такая опция будет добавлена.
Пользователь всегда может посмотреть весь список добавленных им для отслеживания web ресурсов. Пользователь также сможет самостоятельно проверить один или все добавленные ресурсы.

Пару слов про технологии

Для разработки бота я использую библиотеку Aiogram.
В этом боте я не хочу использовать ORM для работы с данными. Считаю это избыточным, да и хотелось бы попробовать реализовать другой подход.
Я написал модуль database с функциями, которые отвечают за создание таблиц, добавление, получение и удаление данных об отслеживаемых ресурсах. Для этого я использовал встроенный модуль sqlite3.
Кроме того, в этом проекте для хранения секретных данных (токена, id администратора, названия базы данных и таблицы) я использовал библиотеку Pydantic и Pydantic_settings.
И еще я стараюсь сразу писать тесты с использованием библиотеки Pytest. Чтобы этот проект отличался от предыдущего бота, разворачивать его на сервере я планирую без использования инструментов контейнеризации.

Стек технологий

  • Python: 3.12
  • SQLite
  • Aiogram: 3.4.1
  • Pydantic: 2.5.3
  • Pydantic-settings: 2.2.1
  • Pytest: 8.1.1

Подробнее с используемыми зависимостями вы можете ознакомиться в файле requirements.txt

Об авторе проекта

Меня зовут Барабанщиков Кирилл, я python backend-разработчик.

Мои контакты

About

monitoring_web_resource_bot - Telegram bot для мониторинга доступности web ресурсов в интернете.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages