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 для бота
- Войдите в аккаунт бота в Matrix клиенте (Element, FluffyChat и т.д.)
- Откройте настройки профиля → Помощь и о программе
- Нажмите "Перейти на страницу разработчика"
- Скопируйте 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 проще в обслуживании и обновлении, обычная установка дает больше контроля над процессом.