Matrix RSS Bot 📰

Бот для публикации RSS новостей в комнаты Matrix. Поддерживает изображения, сжатие картинок и несколько источников.

Скриншот бота

Возможности

  • Поддержка нескольких RSS источников
  • 🖼️ Автоматическое извлечение и отправка изображений из новостей
  • 🗜️ Сжатие изображений для экономии места
  • 📊 История отправленных новостей
  • 🔄 Периодическая очистка старых данных
  • 🐳 Поддержка Docker
  • 📝 Красивое HTML форматирование сообщений
  • ⚙️ Гибкая настройка через YAML конфиги

Установка через скрипт (простой способ)

Этот способ подходит, если на сервере уже есть Python 3.8+ и вы хотите запустить бота как обычный процесс или systemd сервис.

Шаг 1. Клонируем репозиторий

git clone https://git.islipper.ru/Matrix_Bots/matrix-rss-bot.git
cd matrix-rss-bot

Шаг 2. Запускаем установочный скрипт

chmod +x scripts/setup.sh
./scripts/setup.sh

Скрипт автоматически:

  • Создаст виртуальное окружение Python
  • Установит все зависимости
  • Создаст папки для данных и логов
  • Скопирует примеры конфигов
  • Предложит установить systemd сервис

Шаг 3. Настраиваем конфиги

Отредактируйте основной конфиг:

nano config/config.yaml

Введите ваши данные:

  • homeserver: URL вашего Matrix сервера (например, https://matrix.example.com)
  • bot_user_id: ID бота (например, @rssbot:example.com)
  • access_token: токен доступа бота

Отредактируйте список RSS источников:

nano config/sources.yaml

Добавьте ваши источники в формате:

sources:
  - url: "https://example.com/rss.xml"
    name: "Название источника"
    room_id: "!идентификаторомнаты:сервер"

Шаг 4. Запускаем бота

Вариант 1: Ручной запуск

source venv/bin/activate
python -m bot.main

Вариант 2: Через systemd (если установили)

sudo systemctl start matrix-rss-bot
sudo systemctl enable matrix-rss-bot
sudo systemctl status matrix-rss-bot

Вариант 3: Через screen (для долгой работы)

screen -S rss-bot
source venv/bin/activate
python -m bot.main
# Нажми Ctrl+A, затем D для выхода
# Вернуться: screen -r rss-bot

Установка через Docker (рекомендуемый способ)

Этот способ изолирует бота от системы, упрощает обновление и управление.

Шаг 1. Убедитесь, что Docker установлен

docker --version
docker-compose --version

Если Docker не установлен:

# Установка 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. Клонируем репозиторий

git clone https://git.islipper.ru/Matrix_Bots/matrix-rss-bot.git
cd matrix-rss-bot

Шаг 3. Настраиваем конфиги

# Копируем примеры
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. Запускаем бота

# Сборка и запуск в фоне
docker-compose up -d

# Просмотр логов
docker-compose logs -f

# Проверка статуса
docker-compose ps

Шаг 5. Управление ботом

# Остановка
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:

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

curl -X GET "https://ваш_сервер/_matrix/client/r0/joined_rooms" \
     -H "Authorization: Bearer syt_ваш_токен"

Проверка работы

После запуска бота проверьте логи:

# Для обычной установки
tail -f bot.log

# Для Docker
docker-compose logs -f

Вы должны увидеть:

Запускаем RSS-бота...
Соединение с Matrix установлено
Цикл #1
Проверяю: Habr
Найдено 3 новых в Habr
Отправка 3 новостей в комнату

Обновление бота

Для обычной установки:

git pull
source venv/bin/activate
pip install -r requirements.txt --upgrade
sudo systemctl restart matrix-rss-bot  # если через systemd

Для Docker:

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 проще в обслуживании и обновлении, обычная установка дает больше контроля над процессом.

Description
Бот для публикации RSS новостей в комнаты Matrix
Readme 729 KiB
Languages
Python 88.7%
Shell 10.3%
Dockerfile 1%