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