Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/efler/telegram-scrapper-bot
Microservice application for tracking content updates via links and sending notifications via Telegram-bot.
https://github.com/efler/telegram-scrapper-bot
links-management notifications parsing scheduling scrapping telegram-bot tracker
Last synced: 27 days ago
JSON representation
Microservice application for tracking content updates via links and sending notifications via Telegram-bot.
- Host: GitHub
- URL: https://github.com/efler/telegram-scrapper-bot
- Owner: Efler
- Created: 2024-02-06T23:30:34.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-05-05T18:49:16.000Z (8 months ago)
- Last Synced: 2024-05-05T21:36:12.729Z (8 months ago)
- Topics: links-management, notifications, parsing, scheduling, scrapping, telegram-bot, tracker
- Language: Java
- Homepage:
- Size: 433 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
![Bot](https://github.com/Efler/telegram-scrapper-bot/actions/workflows/bot.yml/badge.svg)
![Scrapper](https://github.com/Efler/telegram-scrapper-bot/actions/workflows/scrapper.yml/badge.svg)# Telegram Scrapper Bot (Link tracker)
Микросервисное приложение для отслеживания обновлений контента по ссылкам.
При появлении новых событий уведомление отправляются через Telegram-бота.---
## Stack
* Проект написан на `Java 21` с использованием `Spring Boot 3`
* Приложение состоит из 2-х микросервисов:
- `scrapper` - отслеживание обновлений, работа с базой данных
- `bot` - API приложения через Telegram-бота
* Для работы с API Telegram используется библиотека [pengrad/java-telegram-bot-api](https://github.com/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](https://plugins.jetbrains.com/plugin/4509-statistic))
![stats](project-stats/statistics.png)
---
_<<-- [ @Efler ](https://github.com/Efler) -->>_