RSS — Feed-Abos pro Kanal
GrumpyRss abonniert RSS- und Atom-Feeds und postet neue Einträge automatisch in einen Discord-Kanal, optional mit Rollen-Ping.
Aktivierung
In configs/config.yml:
addons:
rss: true # Standard: true
Kein eigenes configs/modules/rss.yml — das Modul hat keine YAML-Konfigurationsdatei, alle Einstellungen (Feeds, Kanäle, Ping-Rollen) werden pro Feed über /rss add in der Datenbank gespeichert.
Sicherheit: SSRF-Schutz
Damit der Bot nicht dazu missbraucht werden kann, interne Netzwerkadressen abzufragen (z.B. localhost, private IP-Bereiche, Cloud-Metadaten-Endpunkte), prüft GrumpyRss jede Feed-URL:
- Beim Abonnieren (
/rss add): Die URL wird sofort geprüft — zeigt sie auf eine interne/private Adresse, wird das Abo abgelehnt (❌ unsafe-url). - Bei jedem Poll: Die Prüfung läuft erneut, auch bei jedem Redirect-Sprung. Ein Hostname kann sich zwischendurch ändern (DNS-Rebinding) — deshalb reicht die einmalige Prüfung beim Abonnieren nicht aus.
Für Admins bedeutet das: Nur öffentlich erreichbare http:///https://-Feeds funktionieren. Feeds auf internen Servern, VPNs oder mit localhost/127.0.0.1/privaten IPs werden zuverlässig blockiert — das ist gewolltes Verhalten, kein Bug.
Poll-Verhalten & Ausfall-Backoff
- Der Bot prüft alle 10 Minuten alle aktiven Feeds auf neue Einträge.
- Erstes Abo: Beim allerersten Check eines neuen Feeds wird der aktuell neueste Eintrag nur als Referenzpunkt gespeichert — es wird nichts gepostet. So dumpt ein Abo eines alten, aktiven Blogs nicht dessen komplette Historie in den Kanal.
- Pro Tick werden maximal 5 neue Einträge pro Feed gepostet (älteste zuerst), auch wenn mehr neue Einträge vorliegen — das verhindert eine Nachrichtenflut nach längerem Ausfall.
- Ausfall-Backoff: Schlägt das Abrufen oder Parsen eines Feeds 10 Mal in Folge fehl (z.B. Domain offline, kaputtes SSL-Zertifikat, dauerhaft ungültiges XML), pausiert der Bot diesen Feed automatisch für 24 Stunden. Nach Ablauf der 24 Stunden wird der Feed automatisch reaktiviert und normal weiter gepollt — keine manuelle Reaktivierung nötig. Ein einzelner erfolgreicher Abruf setzt den Fehlerzähler sofort wieder auf 0.
Commands
Alle Subcommands benötigen die Berechtigung Manage Guild (Server verwalten).
/rss add <url> [channel] [ping-role]
Abonniert einen neuen Feed.
| Option | Pflicht | Beschreibung |
|---|---|---|
url |
ja | Feed-URL (RSS oder Atom), muss mit http:// oder https:// beginnen |
channel |
nein | Zielkanal für neue Einträge (Text oder Announcement) — Standard: aktueller Kanal |
ping-role |
nein | Rolle, die bei neuen Einträgen gepingt wird |
/rss add url:https://blog.example.com/feed.xml
/rss add url:https://blog.example.com/feed.xml channel:#news ping-role:@Updates
Limit: maximal 20 Feeds pro Server. Ein Feed kann pro Server nur einmal abonniert werden (gleiche URL zweimal → Fehler).
/rss remove <id>
Entfernt ein Abo anhand der ID (siehe /rss list).
/rss remove id:3
/rss list
Listet alle Feed-Abos des Servers mit ID, Zielkanal, URL und optionaler Ping-Rolle.
/rss list
Gepostetes Format
Neue Einträge werden als Embed gepostet:
- Titel (verlinkt, sofern der Link gültig ist)
- Beschreibung (HTML-Tags werden entfernt, auf 300 Zeichen gekürzt)
- Veröffentlichungsdatum (sofern im Feed vorhanden)
- Optionaler Rollen-Ping als Textinhalt vor dem Embed
Schlägt das Posten fehl (z.B. fehlende Kanal-Berechtigung), wird der interne Fortschritt trotzdem weiter gezählt — der Bot versucht nicht endlos, denselben Eintrag erneut zu posten. Admins sollten in diesem Fall die Kanal-Berechtigungen des Bots prüfen.
GrumpyCore Wiki
⚙️ Setup
🔧 Core-Module
🆕 Neue Module
🔔 Benachrichtigungen & Utility
💬 Commands
👥 Staff
GrumpyCore Wiki (English)
⚙️ Setup
🔧 Core Modules
🆕 New Modules
🔔 Notifications & Utility
💬 Commands
👥 Staff