Files
matrix-rss-bot/README.md

290 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Matrix RSS Bot 📰
Бот для публикации RSS новостей в комнаты Matrix. Поддерживает изображения, сжатие картинок и несколько источников.
## Возможности
- ✅ Поддержка нескольких RSS источников
- 🖼️ Автоматическое извлечение и отправка изображений из новостей
- 🗜️ Сжатие изображений для экономии места
- 📊 История отправленных новостей
- 🔄 Периодическая очистка старых данных
- 🐳 Поддержка Docker
- 📝 Красивое HTML форматирование сообщений
- ⚙️ Гибкая настройка через YAML конфиги
![Скриншот бота](https://git.islipper.ru/Matrix_Bots/matrix-rss-bot/raw/branch/master/screen.PNG)
## Установка через скрипт (простой способ)
Этот способ подходит, если на сервере уже есть 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 проще в обслуживании и обновлении, обычная установка дает больше контроля над процессом.