YnM AI - Discourse.py Sopel plugin

discourse.py v1.1

#Sopel RSS Plugin Discourse IRC

import feedparser
import mysql.connector
import sopel.plugin
import time

# MySQL kapcsolati adatok
DB_HOST = 'localhost'
DB_USER = 'ai'
DB_PASSWORD = 'aipass'
DB_NAME = 'forum'
RSS_FEED_URL = 'https://forum.ynm.hu/latest.rss'

# MySQL adatbázis kapcsolat
def get_db_connection():
    return mysql.connector.connect(
        host=DB_HOST,
        user=DB_USER,
        password=DB_PASSWORD,
        database=DB_NAME
    )

# Létrehozza a `seen_posts` táblát, ha az nem létezik
def create_seen_posts_table(cursor):
    cursor.execute('''
    CREATE TABLE IF NOT EXISTS seen_posts (
        id INT AUTO_INCREMENT PRIMARY KEY,
        link VARCHAR(255) UNIQUE NOT NULL
    )
    ''')

# RSS feed ellenőrzése
def check_rss(bot):
    # Véglegesen tárolt feed adatok
    feed = feedparser.parse(RSS_FEED_URL)

    # Kapcsolódás az adatbázishoz
    db = get_db_connection()
    cursor = db.cursor()

    # Létrehozza a `seen_posts` táblát, ha az nem létezik
    create_seen_posts_table(cursor)

    # Az új téma linkek tárolása
    seen_posts = set()

    # Lekérdezzük a már látott posztokat
    cursor.execute('SELECT link FROM seen_posts')
    for (link,) in cursor.fetchall():
        seen_posts.add(link)

    # Új posztok keresése
    for entry in feed.entries:
        entry_id = entry.link
        if entry_id not in seen_posts:
            seen_posts.add(entry_id)

            # Készítsd el a válasz üzenetet
            title = entry.title
            link = entry.link
            published = entry.published

            response = f"📰: {title} - Link: {link} - Közzétéve: {published}"
            bot.say(response, "#YnM")  # Az új üzenet a #YnM csatornára

            # Új poszt hozzáadása az adatbázishoz
            cursor.execute('INSERT INTO seen_posts (link) VALUES (%s)', (entry_id,))
            db.commit()

    # Zárd le a kurzort és a kapcsolatot
    cursor.close()
    db.close()

@sopel.plugin.interval(15)  # Ellenőrizd 15 másodpercenként
def check_rss_task(bot):
    try:
        check_rss(bot)
    except Exception as e:
        bot.log.error(f'Hiba történt: {e}')