You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-[**`TagClient`**](https://github.com/Delphington/LinterBot/blob/main/bot/src/main/java/backend/academy/bot/client/tag/ScrapperTagClientImpl.java) — получение списка тегов, получение ссылки по тегу и удаление тега у ссылки.
70
62
-[**`ScrapperFilterClient`**](https://github.com/Delphington/LinterBot/blob/main/bot/src/main/java/backend/academy/bot/client/filter/ScrapperFilterClientImpl.java) — управление фильтрами (добавление, удаление, получение списка фильтров)
71
63
72
-
Scrapper API работает по OpenAPI-контракту. В случае ошибок ошибки логируются, корректную обработку ошибок и пересылку сообщений в чат выполняет [`ErrorHandler`]().
73
-
74
64
### 📩 Получение обновлений
75
65
76
-
- Бот получает обновления о ссылках через [`UpdateController`]() по HTTP либо через [`KafkaUpdateListener`]() по Kafka.
66
+
- Бот получает обновления о ссылках через [`UpdateController`](https://github.com/Delphington/LinterBot/blob/main/bot/src/main/java/backend/academy/bot/api/controller/UpdateController.java) по HTTP либо через [`KafkaUpdateListener`](https://github.com/Delphington/LinterBot/blob/main/bot/src/main/java/backend/academy/bot/kafka/client/KafkaLinkUpdateListener.java) по Kafka.
77
67
- Scrapper отправляет данные по OpenAPI-контракту.
78
-
- Обновления рассылаются чатам через [`UpdateService`]().
68
+
- Обновления рассылаются чатам через [`NotificationService`](https://github.com/Delphington/LinterBot/blob/main/bot/src/main/java/backend/academy/bot/notification/NotificationService.java).
79
69
80
70
### 📜 Дополнительно
81
71
82
-
- Бот поддерживает встроенное [**меню команд**]() в Telegram.
72
+
- Бот поддерживает встроенное [**меню команд**](https://github.com/Delphington/LinterBot/blob/main/bot/src/main/java/backend/academy/bot/processor/UserMessageProcessor.java) в Telegram.
83
73
84
-
### 🧠 Кеширование
74
+
### 🧠 Кеширование Redis
85
75
86
76
Бот кеширует ответы для следующих команд:
87
77
- /tag
88
78
- /tag <tag>
89
79
- /list
90
80
91
81
🔄 Кеш автоматически сбрасывается в следующих случаях:
92
-
- При добавлении или удалении ссылки (/track, /untrack)
93
-
- При удалении чата (/stop)
82
+
- При добавлении или удалении ссылки (/track, /untrack, /untag)
94
83
95
84
При вызове команд бот сначала проверяет наличие ответа в кеше. Если данные найдены — используется кеш. В противном случае происходит обращение к Scrapper API, и результат сохраняется в кеш.
96
85
@@ -101,21 +90,22 @@ Scrapper API работает по OpenAPI-контракту. В случае
101
90
### 📌 Функционал
102
91
103
92
Scrapper обрабатывает запросы от бота:
104
-
-**Работа с чатами** через [`ChatController`]().
105
-
-**Работа с ссылками** через [`LinkController`]().
106
-
-**Работа с тегами** через [`TagController`]().
93
+
-**Работа с чатами** через [`ChatController`](https://github.com/Delphington/LinterBot/blob/main/scrapper/src/main/java/backend/academy/scrapper/controller/ChatController.java).
94
+
-**Работа с ссылками** через [`LinkController`](https://github.com/Delphington/LinterBot/blob/main/scrapper/src/main/java/backend/academy/scrapper/controller/LinkController.java).
95
+
-**Работа с тегами** через [`TagController`](https://github.com/Delphington/LinterBot/blob/main/scrapper/src/main/java/backend/academy/scrapper/controller/TagController.java).
96
+
-**Работа с фильтрами** через [`FilterController`](https://github.com/Delphington/LinterBot/blob/main/scrapper/src/main/java/backend/academy/scrapper/controller/FilterController.java).
- Stack Overflow — через [`StackOverflowClient`]()
104
+
- GitHub — через [`GitHubClient`](https://github.com/Delphington/LinterBot/blob/main/scrapper/src/main/java/backend/academy/scrapper/tracker/client/GitHubClient.java)
105
+
- Stack Overflow — через [`StackOverflowClient`](https://github.com/Delphington/LinterBot/blob/main/scrapper/src/main/java/backend/academy/scrapper/tracker/client/StackOverFlowClient.java)
116
106
-**⚙️ Обработка полученных данных**
117
107
1. Запрос обновлений
118
-
- Для каждого URL запрашивается обновление через API
108
+
- Для каждого URL запрашивается обновление через открытый API GitHub и StackOverflow
119
109
2. Фильтрация обновлений
120
110
- Определяются подписанные пользователи (чаты), которые отслеживают данный URL.
121
111
- Для каждого пользователя применяется его список фильтров:
@@ -134,29 +124,26 @@ Scrapper обрабатывает запросы от бота:
134
124
135
125
Для хранения данных используются **четыре основные таблицы** и **три вспомогательные таблицы** для связи.
0 commit comments