Skip to content

Microservice application for tracking content updates via links and sending notifications via Telegram-bot.

Notifications You must be signed in to change notification settings

Efler/telegram-scrapper-bot

Repository files navigation

Bot Scrapper

Telegram Scrapper Bot (Link tracker)

Микросервисное приложение для отслеживания обновлений контента по ссылкам. При появлении новых событий уведомление отправляются через Telegram-бота.


Stack

  • Проект написан на Java 21 с использованием Spring Boot 3
  • Приложение состоит из 2-х микросервисов:
    • scrapper - отслеживание обновлений, работа с базой данных
    • bot - API приложения через Telegram-бота
  • Для работы с API Telegram используется библиотека pengrad/java-telegram-bot-api
  • Микросервисы общаются между собой через HTTP/Kafka (в зависимости от конфигурации)
  • Для хранения данных используется PostgreSQL в связке с системой управления миграциями базы данных Liquibase
  • REST API модулей описан в OpenAPI-спецификациях, присутствует возможность тестирования через Swagger
  • Работа с данными в scrapper производится с использованием JDBC/JOOQ/JPA (в зависимости от конфигурации)
  • В каждом модуле используется механизм Retry (Spring) и Rate Limiting (Bucket4j) для HTTP-запросов (настройки конфигурируются)
  • Присутствует мониторинг метрик приложения с использованием Prometheus и Web-UI Grafana
  • Github Actions настроен на автоматическую сборку образов Docker
  • Присутствуют unit/integration-тесты с использованием JUnit 5 & Testcontainers

Packages

Образы модулей доступны на Github Container Registry:

docker pull ghcr.io/efler/telegram-scrapper-bot/scrapper:latest
docker pull ghcr.io/efler/telegram-scrapper-bot/bot:latest

API

Взаимодействие с приложением происходит через Telegram-бота (токен бота указывается через переменную окружения TOKEN)

Список команд:

  • /start - Зарегистрировать пользователя
  • /help - Вывести окно с командами
  • /track [link] - Начать отслеживание ссылки
  • /untrack [link] - Прекратить отслеживание ссылки
  • /list - Вывести список отслеживаемых ссылок
  • /remove_me - Удалить свой аккаунт из базы данных

Бот поддерживает 'прозрачный' режим, конфигурация происходит через переменную окружения IGNORE_INCOME_UPDATES


Module Configuration

Вся конфигурация контейнеров происходит через переменные окружения, сами модули конфигурируются через application.yml


Statistics

Статистика проекта (плагин Statistic)

stats


<<-- @Efler -->>

About

Microservice application for tracking content updates via links and sending notifications via Telegram-bot.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages