Vielen Dank für das Posten des Links zu fluent-discourse!
Ich versuche gerade, mich in Python einzuarbeiten, daher gibt es möglicherweise bessere Wege, dies anzugehen, als das, was ich hier skizziere.
mention = client.notifications.json.get()
Dies gibt ein Dictionary von Erwähnungen für den username zurück, den Sie beim Erstellen des client festgelegt haben. Ich gehe davon aus, dass Sie username auf UserA gesetzt haben, als Sie den client erstellt haben.
Um zu bestätigen, dass ein Dictionary zurückgegeben wird, können Sie Folgendes ausführen:
print(type(mention))
Dies sollte <class 'dict'> zurückgeben.
Sie können die Schlüssel des Dictionarys sehen, indem Sie Folgendes ausführen:
print(list(mention))
Dies gibt ['notifications', 'total_rows_notifications', 'seen_notification_id', 'load_more_notifications'] zurück.
Für Ihren Fall möchten Sie die Werte, die unter dem Schlüssel notifications zu finden sind:
notifications = mention['notifications']
Wenn Sie dann type(notifications) ausführen, sehen Sie, dass es sich um eine Liste handelt. Um Benachrichtigungen zu erhalten, die durch Erwähnungen von UserA ausgelöst wurden, müssen Sie die Liste durchlaufen, um Einträge zu finden, bei denen notification_type auf 1 gesetzt ist. Der einfachste Weg, die Werte für die Discourse-Benachrichtigungstypen zu sehen, ist die Ausführung von Notification.types aus der Rails-Konsole Ihrer Discourse-Site:
pry(main)> Notification.types
=> {:mentioned=>1,
:replied=>2,
:quoted=>3,
:edited=>4,
:liked=>5,
...
Um also “Erwähnungs”-Benachrichtigungen für den Benutzer zu erhalten, dessen Benutzername Sie für den client festgelegt haben, versuchen Sie Folgendes (ich teste dies im Python-Interpreter, während ich es tippe):
data = client.notifications.json.get()
notifications = data['notifications']
# Erstellen Sie eine leere Listenobjekt, um "Erwähnungs"-Benachrichtigungen zu speichern
mentions = []
# Durchlaufen Sie die Liste `notifications`, um alle Einträge zu finden, bei denen `notification_type` auf `1` gesetzt ist
for notification in notifications:
if notification['notification_type'] == 1:
mentions.append(notification)
Dies erstellt eine Liste von Benachrichtigungen, die durch Erwähnungen ausgelöst wurden. Jeder Eintrag in der Liste ist ein Dictionary. Sie können dies mit etwas wie Folgendem überprüfen:
for mention in mentions:
print(mention['topic_id'], mention['post_number'])