Skip to main content
Faculty Bot can monitor RSS feeds and automatically post new items to designated Discord channels. This is useful for announcement feeds, news sites, or course update portals.

Configuration

rssSettings
object
required
RSS feed automation settings.
"rssSettings": {
  "postRss": false,
  "rssFeedData": {
    "1087740850395693096": "https://infotresen.if.hs-kempten.de/dokuwiki/lib/plugins/feed/feed.php?plugin=tag&fn=getTopic&ns=announcements&tag=IF+BA+ALL&title=Thema"
  },
  "rssCheckIntervalHours": 1,
  "rssCheckAfterTimeHours": 8
}

Basic Settings

rssSettings.postRss
boolean
required
Enable or disable RSS feed monitoring.
"postRss": false
Set to true to enable automatic RSS feed posting.
When disabled, the bot will not check any RSS feeds, even if they are configured.
rssSettings.rssCheckIntervalHours
number
required
How often to check RSS feeds for updates (in hours).
"rssCheckIntervalHours": 1
The bot checks all configured feeds every hour. Lower values provide faster updates but use more resources.
Don’t set this too low or you might hit rate limits on the RSS feed server!
rssSettings.rssCheckAfterTimeHours
number
required
Ignore RSS items older than this many hours from their publication date.
"rssCheckAfterTimeHours": 8
This prevents the bot from posting old items when first starting up or when a feed is added.
Only items published within the last 8 hours will be posted.

Feed Mapping

rssSettings.rssFeedData
object
required
Maps Discord channel IDs to RSS feed URLs.
"rssFeedData": {
  "1087740850395693096": "https://example.com/feed1.xml",
  "1087742021684449320": "https://example.com/feed2.xml",
  "1087742288706404454": "https://example.com/feed3.xml"
}
Key: Discord Channel ID (as a string) Value: RSS feed URLEach feed URL will be monitored and new items posted to the corresponding channel.

How to Configure Feeds

  1. Get the Discord channel ID where you want posts (see Channels & Roles)
  2. Find the RSS feed URL for your source
  3. Add an entry to rssFeedData mapping the channel ID to the feed URL
"rssFeedData": {
  "YOUR_CHANNEL_ID": "https://your-university.edu/announcements/feed.xml"
}

How It Works

  1. Every rssCheckIntervalHours, the bot checks all configured feeds
  2. For each RSS item:
    • Checks if it’s newer than rssCheckAfterTimeHours
    • Checks the database to see if it was already posted
    • If it’s new, posts an embed to the corresponding channel
    • If it’s an update to an existing item (same title, newer date), posts an update notice
  3. The bot stores message IDs in the database to track posted items

Message Format

New RSS Item

Neue Nachricht im Planungsportal · [Title]

[Embed with title, description, timestamp]
[Open in Browser Button]

Updated RSS Item

Der letzte Post im Planungsportal wurde aktualisiert · [Title]

[Embed with updated content]
[Open in Browser Button]
Updates are posted as replies to the original message.

Real-World Example

This example shows RSS feeds for different university programs:
{
  "rssSettings": {
    "postRss": true,
    "rssFeedData": {
      "1087740850395693096": "https://infotresen.if.hs-kempten.de/dokuwiki/lib/plugins/feed/feed.php?plugin=tag&fn=getTopic&ns=announcements&tag=IF+BA+ALL&title=Thema",
      "1087742021684449320": "https://infotresen.if.hs-kempten.de/dokuwiki/lib/plugins/feed/feed.php?plugin=tag&fn=getTopic&ns=announcements&tag=GE+BA+ALL&title=Thema",
      "1087742288706404454": "https://infotresen.if.hs-kempten.de/dokuwiki/lib/plugins/feed/feed.php?plugin=tag&fn=getTopic&ns=announcements&tag=WK+BA+ALL&title=Thema",
      "1087742576213368852": "https://infotresen.if.hs-kempten.de/dokuwiki/lib/plugins/feed/feed.php?plugin=tag&fn=getTopic&ns=announcements&tag=GP+MED+BA+ALL&title=Thema",
      "1087743074500878346": "https://infotresen.if.hs-kempten.de/dokuwiki/lib/plugins/feed/feed.php?plugin=tag&fn=getTopic&ns=announcements&tag=MI+MA+ALL&title=Thema",
      "1087743506010873856": "https://infotresen.if.hs-kempten.de/dokuwiki/lib/plugins/feed/feed.php?plugin=tag&fn=getTopic&ns=announcements&tag=GEVC+MA+MG+ALL&title=Thema",
      "1087744504188112917": "https://infotresen.if.hs-kempten.de/dokuwiki/lib/plugins/feed/feed.php?plugin=tag&fn=getTopic&ns=announcements&tag=KI+MA+MK+ALL&title=Thema"
    },
    "rssCheckIntervalHours": 1,
    "rssCheckAfterTimeHours": 8
  }
}
Each program (Informatik, Gamedesign, Wirtschaft, etc.) has its own channel and feed.

Database Requirements

The RSS feature requires a PostgreSQL database with the posted_rss table.
The bot stores:
  • RSS item titles
  • Channel IDs
  • Message IDs (to track and update posts)
Make sure your database migrations are up to date.

Testing RSS Feeds

  1. Set postRss to true
  2. Add one test feed to rssFeedData
  3. Set rssCheckIntervalHours to 1 for faster testing
  4. Restart the bot
  5. Check the logs for “RSS task started”
  6. Wait for the check interval and verify posts appear

Troubleshooting

No posts appearing

  • Check that postRss is true
  • Verify the RSS feed URL is valid (test in a browser)
  • Check that channel IDs are correct strings
  • Review logs for errors
  • Verify RSS items are newer than rssCheckAfterTimeHours

Duplicate posts

  • This shouldn’t happen due to database tracking
  • Check database connection is stable
  • Verify the bot isn’t running multiple instances

Old items being posted

  • Increase rssCheckAfterTimeHours to filter out older items
  • The bot has a hardcoded cutoff date to prevent spam on first startup

Podcast Settings (Bonus)

The bot also supports YouTube channel RSS feeds for podcast-like content:
"podcastSettings": {
  "postPodcast": false,
  "podcastCheckInterval": 1,
  "podcastUrl": "https://www.youtube.com/feeds/videos.xml?channel_id=UCjbhFF_P9Dn774YShrFdSLA",
  "podcastChannel": "899606239804268545"
}
The podcast feature uses the same RSS checking mechanism but is configured separately.

Build docs developers (and LLMs) love