A Discord bot that picks up new cardiCast episodes from the RSS feed and posts to DIscord using the API rather than a webhook
Find a file
Hugh Rundle bdff2f1fb9
fix check for latest post
Use the published date instead of the id
2025-06-14 15:20:47 +10:00
.gitignore adjust for cardicast 2024-09-16 10:23:55 +10:00
latest_post.txt adjust for cardicast 2024-09-16 10:23:55 +10:00
LICENSE oops 2024-09-15 11:58:31 +10:00
README.md initial commit to new bot repo 2025-06-05 18:18:15 +10:00
requirements.txt initial commit to new bot repo 2025-06-05 18:18:15 +10:00
send_message.py fix check for latest post 2025-06-14 15:20:47 +10:00
trigger.sh initial commit to new bot repo 2025-06-05 18:18:15 +10:00

Discord cardiCast webhook

This is a simple Discord app to push new cardiCast episodes into the cardiCast Discord channel using a bot account and the Discord API.

install

  1. Create and activate virtual env
  2. Install requirements: pip install -r requirements.txt
  3. Set up a cronjob (see below)
  4. Test cronjob works
  5. Relax

How it works

We run this on the newcardigan wordpress server.

  1. With a cron job we call trigger.sh
  2. The shell script sets env values then calls webhook.py
  3. The python script checks a custom RSS feed for new podcast episodes
  4. If no new episode, end
  5. If new episode,
    1. save the guid to latest_post.txt for the next round of checking
    2. use the values from the RSS feed
    3. publish via API and bot account to Discord

env values

These are all set in trigger.sh, not in crontab, to keep things contained.

We need to include some secrets via environment values:

  • the channel ID (DISCORD_CARDICAST_CHANNEL)
  • the secret bot token for the API call (DISCORD_CARDICAST_TOKEN)
  • the ID of the @cardiCast ping role (DISCORD_CARDICAST_PING)

And because we run python in a virtual environment:

venv - we need to activate the venv using source <path/to/venv>

Cron job command

*/18 * * * * cd /home/cardigan/rss-discord-bot && ./trigger.sh

RSS feed

The rss feed is https://newcardigan.org/category/cardiparties/?feed=featured_image_feed.

This special featured_image_feed is a slightly modified RSS2 feed. The only thing it does differently is include the featured image in an enclosure so that we can pick it up directly from the feed. See the newcardigan WordPress theme for how this works.