- Python 78.8%
- jinja 20.5%
- CSS 0.6%
- Dockerfile 0.1%
|
All checks were successful
Test and build Docker image / docker (push) Successful in 30s
Change filter evaluation so blacklist matches take precedence over whitelist matches. Updated evaluator logic to skip entries when blacklist and whitelist both match, adjusted related branches to reflect the new decision flow, and updated a feeds.py comment to clarify the combined decision. Also updated blacklist/whitelist templates copy to reflect the new precedence and adjusted tests to expect blacklist-wins behavior. |
||
|---|---|---|
| .forgejo | ||
| .vscode | ||
| discord_rss_bot | ||
| tests | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| LICENSE | ||
| pyproject.toml | ||
| README.md | ||
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, webhooks, and filters.
- Customizable message format for each feed.
- Choose between sending a Discord embed, plain text or full-page screenshot to the webhook.
- 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:
- https://feeds.c3kay.de/
- Genshin Impact News
- Honkai Impact 3rd News
- Honkai Starrail News
- Zenless Zone Zero News
- https://feeds.c3kay.de/
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
- Shift + right-click in the folder and
- 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- You can automate this with Watchtower or Diun
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 pullin the project folder or download the ZIP again.
- If you want to update the bot, you can run
-
Open a terminal in the repository folder.
- Shift + right-click in the folder and
Open PowerShell window here
- Shift + right-click in the folder and
-
Start the bot:
- Type
uv run discord_rss_bot/main.pyinto the PowerShell window.- You can stop the bot with Ctrl + c.
- Type
-
Required for screenshot mode: install browser runtime once:
uv run playwright install chromium
-
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