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.
- Ricevere notifiche
- Ottenere i numeri dei post
- Ottenere il contenuto del post
- Generare una risposta con OpenAI
- Pubblicare la risposta
- 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.