Grazie per aver pubblicato il link a fluent-discourse!
Attualmente sto cercando di aggiornarmi su Python, quindi è possibile che ci siano modi migliori per affrontare questo problema rispetto a quelli che sto delineando qui.
mention = client.notifications.json.get()
Questo restituisce un dizionario di menzioni per il username che hai impostato quando hai creato il client. Presumo che tu abbia impostato il username su UserA quando hai creato il client.
Per confermare che viene restituito un dizionario, puoi eseguire:
print(type(mention))
Questo dovrebbe restituire <class 'dict'>
Puoi vedere le chiavi del dizionario eseguendo:
print(list(mention))
Questo restituirà ['notifications', 'total_rows_notifications', 'seen_notification_id', 'load_more_notifications']
Nel tuo caso, vuoi i valori che si trovano sotto la chiave notifications:
notifications = mention['notifications']
Se esegui type(notifications), vedrai che è una lista. Per ottenere le notifiche che sono state attivate da menzioni di UserA, devi scorrere la lista per trovare le voci in cui notification_type è impostato su 1. Il modo più semplice per vedere i valori per i tipi di notifica di Discourse è eseguire Notification.types dalla console rails del tuo sito Discourse:
pry(main)> Notification.types
=> {:mentioned=>1,
:replied=>2,
:quoted=>3,
:edited=>4,
:liked=>5,
...
Quindi, per ottenere le notifiche di “menzione” per l’utente il cui nome utente hai impostato per il client, prova qualcosa di simile (lo sto testando nell’interprete Python mentre lo scrivo):
data = client.notifications.json.get()
notifications = data['notifications']
# Crea un oggetto lista vuoto per memorizzare le notifiche di "menzione"
mentions = []
# Scorri la lista `notifications` per trovare tutte le voci in cui `notification_type` è impostato su `1`
for notification in notifications:
if notification['notification_type'] == 1:
mentions.append(notification)
Questo creerà una lista di notifiche che sono state attivate da menzioni. Ogni elemento della lista sarà un dizionario. Puoi controllarlo con qualcosa di simile:
for mention in mentions:
print(mention['topic_id'], mention['post_number'])