{"repo":"shpaker/feedforbot","free":true,"listed":false,"github":"https://github.com/shpaker/feedforbot","clone":"git clone https://github.com/shpaker/feedforbot.git","description":"Bot for forwarding updates from RSS/Atom feeds to Telegram","language":"Python","stars":56,"topics":["telegram","rss","bot","python","telegram-bot","cron"],"license":"MIT","category":"chat-messaging","readme_excerpt":"FeedForBot 📡 ============= RSS/Atom in, Telegram out. 🪄 Fresh entries arrive, templated into tidy messages, deduped via your cache of choice — on a cron schedule, with a healthcheck and graceful shutdown baked in. ✨ Features ----------- - 📬 Multiple feeds — any number of listeners/transports, each on its own cron - 🎨 Jinja2 templates — sandbox + HTML autoescape, full access to article fields - 💾 Pluggable cache — files, in-memory, or Redis; first run silent to avoid flood - 🩺 Healthcheck — HTTP /health for Docker/Kubernetes probes - 🛡️ Resilient delivery — auto-retry on Telegram flood-wait, skip malformed entries - 🧹 Graceful shutdown — SIGTERM/SIGINT drain ticks and close handles cleanly - 🐛 Sentry integration — optional error tracking - 🐳 Docker ready — multi-arch GHCR + Docker Hub images, runs as non-root - 🧩 Protocol-driven — custom listeners/transports/caches via simple protocols 📦 Installation --------------- Requires Python 3.10+ . For the full CLI (Click, structlog, YAML config, Sentry, Redis): 🚀 Quick start -------------- 🐍 As a library ⚡ Async — multiple schedulers 📝 CLI with YAML config Create a schedulers.yml — a top-level list of listener+transport entries: Run: On the first run the cache is populated without sending messages, so existing feed entries won't flood the channel. 🤫 📋 Config reference Each list entry supports: Key Description ----- ------------- rule Cron expression (e.g. /5 ), optional — defaults to (every minute) cache limit Max cac","default_branch":null,"files":null,"tree":[],"storefront":"/r/shpaker","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/shpaker/feedforbot/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}