RSS AggreBot - bot for Telegram, which creates personal newsfeed from different RSS sources.
Start it in Telegram and follow instructions.
Chat interface allows to configure own newsfeed - add/remove sources and configure RegExp filter.
It is possible to interact with HTTP API - with gRPC or REST (proxy to gRPC) requests.
flowchart LR
subgraph External
DIRECT{{Direct Requests}}
TGUSER{{Telegram User}}
RSS{{RSS/Atom Source}}
end
subgraph Docker Compose Application
subgraph BOTSERVICE [Bot UI Service]
BOT>Telegram<br/>chat handling]
end
subgraph API [Backend API Service]
CONFIGURER((Sources<br/>Configurator))
end
subgraph Database [Database Container]
DB[(PostgreSQL)]
end
subgraph Courier Service
READER[\Reader/]
SENDER[/Sender\]
end
end
DIRECT ---|gRPC / REST| CONFIGURER
TGUSER ===|config<br/>menu| BOT ---|gRPC| CONFIGURER---|SQL| DB
RSS -.->|feeds| READER
DB -->|get<br/>active sources| READER
READER -->|Go<br/>queue| SENDER
SENDER ---|update<br/>entries log| DB
TGUSER ===|newsfeed<br/>messages| SENDER
Bot application is deployed with Docker Compose from 4 containers:
- Bot UI Service
- Backend API Service
- Courier Service
- Database Container
Processes messages/commands from users, making requests to Backend API by gRPC.
Has open HTTP ports that receive requests by gRPC or REST (proxy to gRPC). Works with database, where it stores user configurations (sources).
Consists of two components:
- Reader - reads all active sources from DB and downloads feed items, that will be passed to Sender for processing.
- Sender - sends out new feed items to user (according to user filter) and updates sent info in DB (items hash log).
PostgreSQL database.
Prereqs:
- Go 1.18+
- PostgreSQL 14+
- goose
Installation:
- Set database connection parameters and Bot Token in the file
.env_local
. - Run
make goose
to create database tables.
Start: Run in different shells:
make run_backend
make run_bot_ui
make run_courier
Prereqs:
- UNIX-compatible OS
- Docker Compose
Configuration of created Docker Compose application are set by the file /deploy/.env
.
Shoud be set at least: TG_TOKEN
.
Set DB_DATA_HOST_DIR
variable to desired local DB directory.
Application Control. Open directory /deploy/
:
make
- build and runmake stop
- stopmake clean
- delete containersmake fclean
- complete remove, including DB files
Artyom nGragas Kornikov. Project for Ozon Route 256 Go.
RSS AggreBot - бот для Telegram, формирующий персональную новостную ленту на основе различных RSS источников.
Запустить бот в Telegram и следовать инструкциям.
Через интерфейс можно настроить свою ленту - добавить/удалить источники и настроить RegExp фильтр.
С приложением можно общаться через HTTP API - запросами gRPC или REST (прокси к gRPC).
flowchart LR
subgraph External
DIRECT{{Direct Requests}}
TGUSER{{Telegram User}}
RSS{{RSS/Atom Source}}
end
subgraph Docker Compose Application
subgraph BOTSERVICE [Bot UI Service]
BOT>Telegram<br/>chat handling]
end
subgraph API [Backend API Service]
CONFIGURER((Sources<br/>Configurator))
end
subgraph Database [Database Container]
DB[(PostgreSQL)]
end
subgraph Courier Service
READER[\Reader/]
SENDER[/Sender\]
end
end
DIRECT ---|gRPC / REST| CONFIGURER
TGUSER ===|config<br/>menu| BOT ---|gRPC| CONFIGURER---|SQL| DB
RSS -.->|feeds| READER
DB -->|get<br/>active sources| READER
READER -->|Go<br/>queue| SENDER
SENDER ---|update<br/>entries log| DB
TGUSER ===|newsfeed<br/>messages| SENDER
Приложение бота разворачивается через Docker Compose на четырёх контейнерах:
- Bot UI Service
- Backend API Service
- Courier Service
- Database Container
Обрабатывает сообщения/команды пользователей, транслируя запросы к Backend API через gRPC.
Имеет открытые HTTP порты, принимающие запросы через gRPC или REST (прокси к gRPC). Работает с базой данных, где хранит конфигурации пользователя (источники).
Состоит из двух компонентов:
- Reader - читает все активные источники из БД и скачивает их записи, которые передаёт для обработки Sender.
- Sender - рассылает новые записи пользователю (с учётом пользовательского фильтра), обновляя в БД информацию об отправленных (лог хешей записей).
База данных PostgreSQL.
Требования:
- Go 1.18+
- PostgreSQL 14+
- goose
Установка:
- В файле
.env_local
указать параметры подключения к Базе Данных и Токен бота. - Выполнить
make goose
для создания таблиц БД.
Запуск. Выполнить в отдельных оболочках:
make run_backend
make run_bot_ui
make run_courier
Требования:
- UNIX-совместимая ОС
- Docker Compose
Параметры создаваемого приложения Docker Compose задаются через файл
/deploy/.env
.
В нём необходимо как минимум указать Токен бота - TG_TOKEN
.
Через переменную DB_DATA_HOST_DIR
можно изменить место хранения БД.
Управление. Перейти в директорию /deploy/
:
make
- сборка и запускmake stop
- остановкаmake clean
- удаление контейнеровmake fclean
- полное удаление, включая файлы БД
Артем nGragas Корников. Учебный проект для Ozon Route 256.