291 lines
8.3 KiB
Markdown
291 lines
8.3 KiB
Markdown
# Matrix RSS Bot 📰
|
||
|
||
Бот для публикации RSS новостей в комнаты Matrix. Поддерживает изображения, сжатие картинок и несколько источников.
|
||
|
||

|
||
|
||
## Возможности
|
||
|
||
- ✅ Поддержка нескольких RSS источников
|
||
- 🖼️ Автоматическое извлечение и отправка изображений из новостей
|
||
- 🗜️ Сжатие изображений для экономии места
|
||
- 📊 История отправленных новостей
|
||
- 🔄 Периодическая очистка старых данных
|
||
- 🐳 Поддержка Docker
|
||
- 📝 Красивое HTML форматирование сообщений
|
||
- ⚙️ Гибкая настройка через YAML конфиги
|
||
|
||
|
||
## Установка через скрипт (простой способ)
|
||
|
||
Этот способ подходит, если на сервере уже есть Python 3.8+ и вы хотите запустить бота как обычный процесс или systemd сервис.
|
||
|
||
### Шаг 1. Клонируем репозиторий
|
||
|
||
```bash
|
||
git clone https://git.islipper.ru/Matrix_Bots/matrix-rss-bot.git
|
||
cd matrix-rss-bot
|
||
```
|
||
|
||
### Шаг 2. Запускаем установочный скрипт
|
||
|
||
```bash
|
||
chmod +x scripts/setup.sh
|
||
./scripts/setup.sh
|
||
```
|
||
|
||
Скрипт автоматически:
|
||
- Создаст виртуальное окружение Python
|
||
- Установит все зависимости
|
||
- Создаст папки для данных и логов
|
||
- Скопирует примеры конфигов
|
||
- Предложит установить systemd сервис
|
||
|
||
### Шаг 3. Настраиваем конфиги
|
||
|
||
Отредактируйте основной конфиг:
|
||
|
||
```bash
|
||
nano config/config.yaml
|
||
```
|
||
|
||
Введите ваши данные:
|
||
- `homeserver`: URL вашего Matrix сервера (например, https://matrix.example.com)
|
||
- `bot_user_id`: ID бота (например, @rssbot:example.com)
|
||
- `access_token`: токен доступа бота
|
||
|
||
Отредактируйте список RSS источников:
|
||
|
||
```bash
|
||
nano config/sources.yaml
|
||
```
|
||
|
||
Добавьте ваши источники в формате:
|
||
```yaml
|
||
sources:
|
||
- url: "https://example.com/rss.xml"
|
||
name: "Название источника"
|
||
room_id: "!идентификатор_комнаты:сервер"
|
||
```
|
||
|
||
### Шаг 4. Запускаем бота
|
||
|
||
**Вариант 1: Ручной запуск**
|
||
|
||
```bash
|
||
source venv/bin/activate
|
||
python -m bot.main
|
||
```
|
||
|
||
**Вариант 2: Через systemd (если установили)**
|
||
|
||
```bash
|
||
sudo systemctl start matrix-rss-bot
|
||
sudo systemctl enable matrix-rss-bot
|
||
sudo systemctl status matrix-rss-bot
|
||
```
|
||
|
||
**Вариант 3: Через screen (для долгой работы)**
|
||
|
||
```bash
|
||
screen -S rss-bot
|
||
source venv/bin/activate
|
||
python -m bot.main
|
||
# Нажми Ctrl+A, затем D для выхода
|
||
# Вернуться: screen -r rss-bot
|
||
```
|
||
|
||
---
|
||
|
||
## Установка через Docker (рекомендуемый способ)
|
||
|
||
Этот способ изолирует бота от системы, упрощает обновление и управление.
|
||
|
||
### Шаг 1. Убедитесь, что Docker установлен
|
||
|
||
```bash
|
||
docker --version
|
||
docker-compose --version
|
||
```
|
||
|
||
Если Docker не установлен:
|
||
|
||
```bash
|
||
# Установка Docker
|
||
curl -fsSL https://get.docker.com -o get-docker.sh
|
||
sh get-docker.sh
|
||
|
||
# Установка Docker Compose
|
||
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
|
||
chmod +x /usr/local/bin/docker-compose
|
||
```
|
||
|
||
### Шаг 2. Клонируем репозиторий
|
||
|
||
```bash
|
||
git clone https://git.islipper.ru/Matrix_Bots/matrix-rss-bot.git
|
||
cd matrix-rss-bot
|
||
```
|
||
|
||
### Шаг 3. Настраиваем конфиги
|
||
|
||
```bash
|
||
# Копируем примеры
|
||
cp config/config.example.yaml config/config.yaml
|
||
cp config/sources.example.yaml config/sources.yaml
|
||
|
||
# Редактируем
|
||
nano config/config.yaml
|
||
nano config/sources.yaml
|
||
```
|
||
|
||
### Шаг 4. Запускаем бота
|
||
|
||
```bash
|
||
# Сборка и запуск в фоне
|
||
docker-compose up -d
|
||
|
||
# Просмотр логов
|
||
docker-compose logs -f
|
||
|
||
# Проверка статуса
|
||
docker-compose ps
|
||
```
|
||
|
||
### Шаг 5. Управление ботом
|
||
|
||
```bash
|
||
# Остановка
|
||
docker-compose stop
|
||
|
||
# Запуск
|
||
docker-compose start
|
||
|
||
# Перезапуск
|
||
docker-compose restart
|
||
|
||
# Остановка с удалением контейнера
|
||
docker-compose down
|
||
|
||
# Обновление (после git pull)
|
||
docker-compose up -d --build
|
||
```
|
||
|
||
---
|
||
|
||
## Получение access_token для бота
|
||
|
||
1. Войдите в аккаунт бота в Matrix клиенте (Element, FluffyChat и т.д.)
|
||
2. Откройте настройки профиля → Помощь и о программе
|
||
3. Нажмите "Перейти на страницу разработчика"
|
||
4. Скопируйте access_token из раздела "Информация о сессии"
|
||
|
||
Или через API:
|
||
|
||
```bash
|
||
curl -X POST "https://ваш_сервер/_matrix/client/r0/login" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"type": "m.login.password",
|
||
"user": "@rssbot:ваш_сервер",
|
||
"password": "пароль_бота"
|
||
}'
|
||
```
|
||
|
||
---
|
||
|
||
## Получение room_id для комнаты
|
||
|
||
**Способ 1: Через клиент**
|
||
- Откройте комнату в Element
|
||
- Нажмите на название комнаты → Настройки комнаты
|
||
- Скопируйте внутренний идентификатор (начинается с !)
|
||
|
||
**Способ 2: Через API**
|
||
|
||
```bash
|
||
curl -X GET "https://ваш_сервер/_matrix/client/r0/joined_rooms" \
|
||
-H "Authorization: Bearer syt_ваш_токен"
|
||
```
|
||
|
||
---
|
||
|
||
## Проверка работы
|
||
|
||
После запуска бота проверьте логи:
|
||
|
||
```bash
|
||
# Для обычной установки
|
||
tail -f bot.log
|
||
|
||
# Для Docker
|
||
docker-compose logs -f
|
||
```
|
||
|
||
Вы должны увидеть:
|
||
|
||
```
|
||
Запускаем RSS-бота...
|
||
Соединение с Matrix установлено
|
||
Цикл #1
|
||
Проверяю: Habr
|
||
Найдено 3 новых в Habr
|
||
Отправка 3 новостей в комнату
|
||
```
|
||
|
||
---
|
||
|
||
## Обновление бота
|
||
|
||
**Для обычной установки:**
|
||
|
||
```bash
|
||
git pull
|
||
source venv/bin/activate
|
||
pip install -r requirements.txt --upgrade
|
||
sudo systemctl restart matrix-rss-bot # если через systemd
|
||
```
|
||
|
||
**Для Docker:**
|
||
|
||
```bash
|
||
git pull
|
||
docker-compose down
|
||
docker-compose up -d --build
|
||
```
|
||
|
||
---
|
||
|
||
## Устранение частых проблем
|
||
|
||
**Ошибка "Authentication failed"**
|
||
Проверьте access_token в config.yaml, получите новый токен.
|
||
|
||
**Бот не отправляет сообщения**
|
||
Убедитесь, что бот приглашен в комнату и имеет права на отправку.
|
||
|
||
**Не скачиваются изображения**
|
||
Проверьте права на папку data/news_images, установите Pillow.
|
||
|
||
**Контейнер не запускается (Docker)**
|
||
Проверьте логи: docker-compose logs
|
||
|
||
---
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
matrix-rss-bot/
|
||
├── bot/ # Исходный код
|
||
├── config/ # Конфиги (config.yaml, sources.yaml)
|
||
├── data/ # Данные (история, изображения)
|
||
├── logs/ # Логи бота
|
||
├── scripts/ # Установочные скрипты
|
||
├── docker-compose.yml # Конфигурация Docker
|
||
├── requirements.txt # Зависимости Python
|
||
└── README.md # Документация
|
||
```
|
||
|
||
---
|
||
|
||
Выберите способ установки, который лучше подходит для вашего сервера. Docker проще в обслуживании и обновлении, обычная установка дает больше контроля над процессом. |