Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Hier ist ein **Discord-Bot in Python**, der RSS-Feeds liest und das Bild aus dem `<description>`-Tag als Foto in einem Discord-Channel postet. Der Bot nutzt **discord.py** und **feedparser**.
- ---
- ## 🔧 **Voraussetzungen**
- 1. Installiere die benötigten Bibliotheken:
- ```sh
- pip install discord.py feedparser aiohttp
- ```
- 2. Erstelle einen **Discord-Bot** über das [Discord Developer Portal](https://discord.com/developers/applications).
- 3. Aktiviere **"MESSAGE CONTENT INTENT"** in den Bot-Einstellungen.
- 4. Kopiere den **Bot-Token** und ersetze ihn im Skript.
- ---
- ## 📜 **Discord RSS-Bot Code**
- ```python
- import discord
- import feedparser
- import asyncio
- import aiohttp
- TOKEN = "DEIN_BOT_TOKEN" # Ersetze mit deinem Discord-Bot-Token
- RSS_FEED_URL = "https://cube.destiny-mine.de/rss_feed.xml" # Deine RSS-Feed-URL
- CHANNEL_ID = 123456789012345678 # Ersetze mit der ID deines Discord-Channels
- intents = discord.Intents.default()
- client = discord.Client(intents=intents)
- last_posted_guid = None # Speichert die letzte GUID, um doppelte Posts zu vermeiden
- async def fetch_rss():
- global last_posted_guid
- while True:
- feed = feedparser.parse(RSS_FEED_URL)
- if feed.entries:
- latest_entry = feed.entries[0] # Neuestes RSS-Item
- image_url = extract_image_url(latest_entry.description)
- if latest_entry.guid != last_posted_guid and image_url:
- channel = client.get_channel(CHANNEL_ID)
- if channel:
- await channel.send(f"📢 **{latest_entry.title}**\n{latest_entry.link}")
- await channel.send(image_url)
- last_posted_guid = latest_entry.guid
- await asyncio.sleep(600) # Alle 10 Minuten checken
- def extract_image_url(description):
- """ Extrahiert das Bild-URL aus dem RSS-Feed-Beschreibungstext """
- import re
- match = re.search(r'<img src="([^"]+)"', description)
- return match.group(1) if match else None
- @client.event
- async def on_ready():
- print(f'✅ Bot ist eingeloggt als {client.user}')
- client.loop.create_task(fetch_rss()) # Starte den RSS-Check
- client.run(TOKEN)
- ```
- ---
- ## 🛠 **Erklärung**
- ✅ Der Bot **überwacht** das RSS-Feed alle 10 Minuten.
- ✅ Wenn ein neuer Beitrag entdeckt wird, postet er **den Titel + Link** und **das Bild** im Discord-Channel.
- ✅ Verhindert doppelte Posts mit `last_posted_guid`.
- ✅ Funktioniert für Feeds, die ein `<img>` im `<description>`-Tag enthalten.
- ---
- ## 🚀 **Starten des Bots**
- Speichere das Skript als `rss_bot.py` und starte es mit:
- ```sh
- python rss_bot.py
- ```
- Falls du Fragen hast oder Anpassungen brauchst, sag Bescheid! 😊
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement