A RSS bot for Discord
  • Python 76.9%
  • jinja 22.7%
  • Dockerfile 0.3%
Find a file
Joakim Helleśen f1d3204930
All checks were successful
Test and build Docker image / docker (push) Successful in 21s
Add deployment step to build workflow for production server
2026-03-07 23:12:00 +01:00
.forgejo Add deployment step to build workflow for production server 2026-03-07 23:12:00 +01:00
.vscode Add additional words to cSpell configuration in settings.json 2025-06-07 06:05:14 +02:00
discord_rss_bot Refactor feed URL and update interval sections 2026-03-07 19:06:57 +01:00
tests Add endpoint to see all the entries for a webhook 2026-03-07 19:00:11 +01:00
.env.example Add feed URL change functionality and related tests 2026-03-07 06:29:12 +01:00
.gitattributes Add .gitattributes to set Jinja as the language for HTML files 2025-04-01 22:58:42 +02:00
.gitignore chore: remove generated lockfiles, simplify deps, update pre-commit and ignore .python-version 2025-10-15 04:59:44 +02:00
.pre-commit-config.yaml Update pre-commit dependencies to latest versions 2026-03-07 15:30:34 +01:00
docker-compose.yml Update Docker healthcheck 2025-05-04 05:28:37 +02:00
Dockerfile chore(deps): update dependency python (#401) 2025-10-15 03:12:19 +00:00
LICENSE Initial commit 2021-12-11 23:32:40 +01:00
pyproject.toml Randomize test order 2026-03-07 06:43:32 +01:00
README.md Add support for changing the update interval for feeds 2026-03-07 05:50:20 +01:00

discord-rss-bot

Subscribe to RSS feeds and get updates to a Discord webhook.

Email: tlovinator@gmail.com

Discord: TheLovinator#9276

Features

  • Subscribe to RSS feeds and get updates to a Discord webhook.
  • Web interface to manage subscriptions.
  • Customizable message format for each feed.
  • Choose between Discord embed or plain text.
  • Regex filters for RSS feeds.
  • Blacklist/whitelist words in the title/description/author/etc.
  • Set different update frequencies for each feed or use a global default.
  • Gets extra information from APIs if available, currently for:

Installation

You have two choices, using Docker or install directly on your computer.

Docker

  • Open a terminal in the repository folder.
    • Shift + right-click in the folder and Open PowerShell window here
  • Run the Docker Compose file:
    • docker-compose up
      • You can stop the bot with Ctrl + c.
      • If you want to run the bot in the background, you can run docker-compose up -d.
  • You should run this bot behind a reverse proxy like Caddy or Nginx.
    • 5000 is the port the bot listens on.
  • You can update the container with docker-compose pull

Install directly on your computer

  • Install the latest of uv:

    • powershell -ExecutionPolicy ByPass -c "irm <https://astral.sh/uv/install.ps1> | iex"
  • Download the project from GitHub with Git or download the ZIP.

    • If you want to update the bot, you can run git pull in the project folder or download the ZIP again.
  • Open a terminal in the repository folder.

    • Shift + right-click in the folder and Open PowerShell window here
  • Start the bot:

    • Type uv run discord_rss_bot/main.py into the PowerShell window.
      • You can stop the bot with Ctrl + c.
  • Bot is now running on port 3000.

  • You should run this bot behind a reverse proxy like Caddy or Nginx if you want to access it from the internet. Remember to add authentication.

  • You can access the web interface at http://localhost:3000/.

  • To run automatically on boot:

    • Use Windows Task Scheduler.
    • Or add a shortcut to %userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup.

Git Backup (State Version Control)

The bot can commit every configuration change (adding/removing feeds, webhook changes, blacklist/whitelist updates) to a separate private Git repository so you get a full, auditable history of state changes — similar to etckeeper.

Configuration

Set the following environment variables (e.g. in docker-compose.yml or a .env file):

Variable Required Description
GIT_BACKUP_PATH Yes Local path where the backup git repository is stored. The bot will initialise it automatically if it does not yet exist.
GIT_BACKUP_REMOTE No Remote URL to push to after each commit (e.g. git@github.com:you/private-config.git). Leave unset to keep the history local only.

What is backed up

After every relevant change a state.json file is written and committed. The file contains:

  • All feed URLs together with their webhook URL, custom message, embed settings, and any blacklist/whitelist filters.
  • The global list of Discord webhooks.

Docker example

services:
  discord-rss-bot:
    image: ghcr.io/thelovinator1/discord-rss-bot:latest
    volumes:
      - ./data:/data
    environment:
      - GIT_BACKUP_PATH=/data/backup
      - GIT_BACKUP_REMOTE=git@github.com:you/private-config.git

For SSH-based remotes mount your SSH key into the container and make sure the host key is trusted, e.g.:

    volumes:
      - ./data:/data
      - ~/.ssh:/root/.ssh:ro