Python > Ottieni il contenuto del post se menzionato

Questo è fantastico. Grazie per le informazioni. Non ci sono molte informazioni su Python x Discourse disponibili qui, quindi sono felice di imparare, e forse questo aiuterà altri. Ho appena provato il tuo codice e sembra funzionare come previsto. Naturalmente, non ho smesso di giocare, quindi ho trovato un modo per arrivare fino al passaggio 5 e un modo diverso per ottenere i valori di cui avevo bisogno fino a un semplice copia-incolla del contenuto del post.

Quello che voglio è fondamentalmente questo.

  1. Ricevere notifiche
  2. Ottenere i numeri dei post
  3. Ottenere il contenuto del post
  4. Generare una risposta con OpenAI
  5. Pubblicare la risposta
  6. Segnare la stessa notifica come letta?
# Imposta un ciclo per eseguire il bot all'infinito
while True:
    # Ottieni le azioni dell'utente e recupera l'ID del post    
    data = {
    'username': 'theuser',
    # Per menzioni e risposte, ho bisogno di ottenere i filtri 6 + 7, ma per qualche motivo viene fornita solo 1 risposta json.
    'filter': 6 | 7,
    'limit': 10,
    }
    
    unread_mentions = client.user_actions.json.get(data)
    print(unread_mentions)

    user_actions = unread_mentions['user_actions']

    # Cicla su ogni menzione non letta
    for user_action in unread_mentions['user_actions']:
        topic_id = user_action['topic_id']
        post_number = user_action['post_number']
        post_id = user_action['post_id']
        username = user_action['username']

        print(f'Topic ID: {topic_id}, Post Number: {post_number}, Post ID: {post_id}, Reply to: {username}')
    
        # Ottieni il contenuto del post   
        post = client.posts[post_id].json.get()

        # Stampa il contenuto del post
        post_content = post['raw']

        # Genera una risposta al post
        response = generate_response(post_content)
    
        # Pubblica una risposta al forum
        content = {
            'topic_id': topic_id,
            'raw': response + ' @' + str(username)
        }
        make_post = client.posts.json.post(content)

Attualmente ho due problemi:

  • Viene recuperata solo 1 menzione. Devo aver dimenticato qualcosa, ma non ho ancora capito perché.
  • Ovviamente vogliamo rispondere a un post solo una volta, e poiché stiamo ciclando, abbiamo bisogno di qualcosa qui per evitarlo.
    • Possiamo memorizzare il post_id in un file .txt (non sono sicuro di quanti dati possa memorizzare, penso che tu possa gestire un bel po’ di menzioni qui.
    • La mia soluzione ideale era quella di contrassegnare la notifica come letta. Ma mi sono reso conto che in nessuno dei nostri codici stiamo recuperando le menzioni non lette (beh, ho provato all’inizio, recuperando le notifiche non lette, ma non sono riuscito a estrarre/memorizzare la variabile post_id che mi serviva per usare /posts/get.json e recuperare il contenuto “raw”).

Il mio obiettivo finale è alimentare la risposta con l’API di OpenAI. Ma prima devo trovare un modo per risolvere i problemi di cui sopra.