Das ist toll. Danke für die Informationen. Es gibt nicht viele Informationen über Python x Discourse da draußen, also freue ich mich zu lernen, und vielleicht hilft das anderen. Ich habe gerade Ihren Code ausprobiert und er scheint wie erwartet zu funktionieren. Natürlich habe ich nicht aufgehört zu spielen, also habe ich einen Workaround gefunden, um bis zu Schritt 5 zu gelangen, und eine andere Möglichkeit, die Werte zu erhalten, die ich bis zu einem rohen Einfügen des Beitragsinhalts benötigte.
Was ich im Grunde möchte, ist Folgendes.
- Benachrichtigungen erhalten
- Beitragsnummern erhalten
- Beitragsinhalt erhalten
- Antwort mit OpenAI generieren
- Antwort posten
- Dieselbe Benachrichtigung als gelesen markieren?
# Richten Sie eine Schleife ein, um den Bot unbegrenzt laufen zu lassen
while True:
# Benutzeraktionen abrufen und Beitrags-ID abrufen
data = {
'username': 'theuser',
# Für Erwähnungen und Antworten benötige ich die Filter 6 + 7, aber aus irgendeinem Grund wird nur 1 JSON-Antwort geliefert.
'filter': 6 | 7,
'limit': 10,
}
unread_mentions = client.user_actions.json.get(data)
print(unread_mentions)
user_actions = unread_mentions['user_actions']
# Schleife über jede ungelesene Erwähnung
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}')
# Den Beitragsinhalt abrufen
post = client.posts[post_id].json.get()
# Den Beitragsinhalt ausgeben
post_content = post['raw']
# Eine Antwort auf den Beitrag generieren
response = generate_response(post_content)
# Eine Antwort auf das Forum posten
content = {
'topic_id': topic_id,
'raw': response + ' @' + str(username)
}
make_post = client.posts.json.post(content)
Derzeit habe ich zwei Probleme:
- Es wird nur 1 Erwähnung abgerufen. Ich muss etwas vergessen haben, habe aber noch nicht herausgefunden, warum.
- Natürlich wollen wir auf einen Beitrag nur einmal antworten, und da wir eine Schleife verwenden, brauchen wir hier etwas, um dies zu verhindern.
- Wir können die post_id in einer .txt-Datei speichern (ich bin mir nicht sicher, wie viele Daten dies speichern kann, ich denke, Sie können hier eine ganze Menge Erwähnungen verarbeiten.
- Meine ideale Lösung war es, die Benachrichtigung als gelesen zu markieren. Aber ich habe erkannt, dass wir in keinem unserer Codes ungelesene Erwähnungen abrufen (nun, ich habe es zuerst versucht, ungelesene Benachrichtigungen abzurufen, aber ich konnte die post_id-Variable nicht extrahieren/speichern, die ich für /posts/get.json und das Abrufen des “raw”-Inhalts benötigte.
Mein Endziel ist es, die Antwort mit der OpenAI API zu füttern. Aber zuerst muss ich einen Weg finden, die oben genannten Probleme zu lösen.