Python: Obtener contenido de post si se menciona

Gracias por publicar el enlace a fluent-discourse.

Actualmente estoy intentando ponerme al día con Python, por lo que es posible que haya mejores maneras de abordar esto que las que describo aquí.

mention = client.notifications.json.get()

Esto devuelve un diccionario de menciones para el username que estableciste al crear el client. Asumo que estableciste el username en UserA al crear el client.

Para confirmar que se está devolviendo un diccionario, puedes ejecutar:

print(type(mention))

Eso debería devolver <class 'dict'>

Puedes ver las claves del diccionario ejecutando:

print(list(mention))

Eso devolverá ['notifications', 'total_rows_notifications', 'seen_notification_id', 'load_more_notifications']

Para tu caso, quieres los valores que se encuentran bajo la clave notifications:

notifications = mention['notifications']

Si luego ejecutas type(notifications), verás que es una lista. Para obtener las notificaciones que fueron activadas por menciones de UserA, necesitas iterar a través de la lista para encontrar entradas donde notification_type esté establecido en 1. La forma más fácil de ver los valores de los tipos de notificación de Discourse es ejecutar Notification.types desde la consola de rails de tu sitio de Discourse:

 pry(main)> Notification.types
=> {:mentioned=>1,
 :replied=>2,
 :quoted=>3,
 :edited=>4,
 :liked=>5,
 ...

Así que para obtener notificaciones de “mención” para el usuario cuyo nombre de usuario has establecido para el client, intenta algo como esto (estoy probando esto en el intérprete de Python mientras lo escribo):

data = client.notifications.json.get()
notifications = data['notifications']
# Crea un objeto de lista vacío para almacenar las notificaciones de "mención"
mentions = []
# Itera a través de la lista `notifications` para encontrar todas las entradas donde `notification_type` esté establecido en `1`
for notification in notifications:
    if notification['notification_type'] == 1:
        mentions.append(notification)

Eso creará una lista de notificaciones que fueron activadas por menciones. Cada elemento de la lista será un diccionario. Puedes comprobarlo con algo como:

for mention in mentions:
    print(mention['topic_id'], mention['post_number'])