Skip to main content

discord-rss-bot

linting: pylint pylint score code style: black License: MIT Poetry GitHub top language GitHub Release

A Discord bot that delivers RSS feed updates in real-time to your servers.

Enpowered by Feed Reader. Inspired by FeedCord.

Preview

Features

  • 🔄 Automated RSS Feed Updates – Periodic updates with configurable intervals.
  • 📜 Enhanced Message Formatting – Attempts to convert HTML to Markdown, truncates long summaries without breaking formatting.
  • 🖼️ Image & Media Support – Uses the first image as an embed cover for rich Discord embeds.
  • ⚡ Efficient & Scalable – Optimized with async processing and concurrent execution.
  • 🐋 Dockerized for Easy Deployment – Run anywhere with minimal setup (linux/amd64 & linux/arm64 supported).

Configuration

  1. Create a Discord server. See also How do I create a server?
  2. Create a Discord bot account and get its token. See also Creating a bot account
  3. Add the bot to your Discord server & channels.

The bot is configured via a YAML file. Here is an example:

db_path: data/rss.sqlite3 # path to the database
feeds:

  # Releases of this project
  - feed_url: https://github.com/VioletCranberry/discord-rss-bot/releases.atom
    channel_id: 1336277462<redacted>
    update_interval: 30

  # Hacker news daily (Kudos to Colin Percival)
  - feed_url: https://www.daemonology.net/hn-daily/index.rss
    channel_id: 1334640995<redacted>
    update_interval: 30 # optional, defaults to 60 minutes if not provided

  # Ask hacker news weekly (Kudos to Colin Percival)
  - feed_url: https://www.daemonology.net/hn-weekly-ask/index.rss
    channel_id: 1335575467<redacted>
    update_interval: 30

  # Github - trending (all languages) daily
  - feed_url: https://mshibanami.github.io/GitHubTrendingRSS/daily/all.xml
    channel_id: 1336324646<redacted>
    update_interval: 30

  # Github - trending (all languages) weekly
  - feed_url: https://mshibanami.github.io/GitHubTrendingRSS/weekly/all.xml
    channel_id: 1336383236<redacted>
    update_interval: 30

  # Hacker News Best - top vote getters from the past few days
  - feed_url: https://hnrss.org/best
    channel_id: 1335577844<redacted>
    update_interval: 30

  ...

Pypi package

pip install discord-rss-bot
mkdir data && python -m discord_rss_bot --token ${DISCORD_BOT_TOKEN} --config config.yaml

Docker run

docker run \
  -v $(pwd)/config.yaml:/app/config.yaml \
  -v $(pwd)/data:/app/data \
  ghcr.io/violetcranberry/discord-rss-bot:latest --token ${DISCORD_BOT_TOKEN}

Docker compose

discord-rss-bot:
  # Note: pin the image version to a specific release tag for production use
  image: ghcr.io/violetcranberry/discord-rss-bot:latest
  container_name: discord-rss-bot
  environment:
      - DISCORD_BOT_TOKEN=${DISCORD_BOT_TOKEN}
  volumes:
    - ./config.yaml:/app/config.yaml
    - ./data:/app/data
  restart: unless-stopped
  healthcheck:
      test: ["CMD", "curl", "--fail", "http://localhost:8080/healthz"]
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 10s
  # command:
    #   - "--token=${DISCORD_BOT_TOKEN}"
    #   - "--debug"
    #   - "--config=/app/config.yaml"

Local development

git clone https://github.com/VioletCranberry/discord-rss-bot.git && cd discord-rss-bot
poetry install --with dev

poetry run python -m discord_rss_bot <args>
poetry run pylint --verbose discord_rss_bot
poetry run black --verbose discord_rss_bot

Metadata

Release files for discord-rss-bot 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for discord-rss-bot 0.2.1
File Size Uploaded Provenance Actions
discord_rss_bot-0.2.1.tar.gz 11.2 kB Without provenance Details for discord_rss_bot-0.2.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for discord-rss-bot 0.2.1
File Interpreter ABI Platform Actions
discord_rss_bot-0.2.1-py3-none-any.whl Python 3 none any Details for discord_rss_bot-0.2.1-py3-none-any.whl

Total release size: 23.7 kB

Release files / discord_rss_bot-0.2.1.tar.gz

Download URL discord_rss_bot-0.2.1.tar.gz
Size 11.2 kB
Tags Source
SHA-256 checksum
How to use checksums
95d860dfcec21aeef9cdb7d1af0b6796d5c7eaf94958005eee5067ac5fefe8d5
BLAKE2b-256 checksum
How to use checksums
ec1a841cf1da2904a6e89db78ae09f9d93d91e9f07464ec0cad7618ccf9e5643
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.0.1 CPython/3.13.2 Linux/6.8.0-1021-azure

Release files / discord_rss_bot-0.2.1-py3-none-any.whl

Download URL discord_rss_bot-0.2.1-py3-none-any.whl
Size 12.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1f83e1cc794f9cb6fecc58e2e3bd028ff570b3ce05bababb6fadd641e021200e
BLAKE2b-256 checksum
How to use checksums
870c12a0a2759a5da5e36b29ff9aeb41d76eec21de4856195c625a7b23358d90
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.0.1 CPython/3.13.2 Linux/6.8.0-1021-azure

Security for discord-rss-bot 0.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page