Python > Obter conteúdo do post se mencionado

Obrigado por postar o link para o fluent-discourse!

Estou atualmente tentando me atualizar em Python, então é possível que existam maneiras melhores de abordar isso do que o que estou descrevendo aqui.

mention = client.notifications.json.get()

Isso está retornando um dicionário de menções para o username que você definiu ao criar o client. Estou assumindo que você definiu o username como UserA ao criar o client.

Para confirmar que um dicionário está sendo retornado, você pode executar:

print(type(mention))

Isso deve retornar <class 'dict'>

Você pode ver as chaves do dicionário executando:

print(list(mention))

Isso retornará ['notifications', 'total_rows_notifications', 'seen_notification_id', 'load_more_notifications']

Para o seu caso, você quer os valores que são encontrados sob a chave notifications:

notifications = mention['notifications']

Se você então executar type(notifications), verá que é uma lista. Para obter notificações que foram acionadas por menções de UserA, você precisa iterar pela lista para encontrar entradas onde o notification_type está definido como 1. A maneira mais fácil de ver os valores para os tipos de notificação do Discourse é executar Notification.types do console rails do seu site Discourse:

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

Portanto, para obter notificações de "menção" para o usuário cujo nome de usuário você definiu para o client, tente algo como isto (estou testando isso no interpretador Python enquanto digito):

data = client.notifications.json.get()
notifications = data['notifications']
# Cria um objeto de lista vazio para armazenar notificações de "menção"
mentions = []
# Itera pela lista `notifications` para encontrar todas as entradas onde `notification_type` é definido como `1`
for notification in notifications:
    if notification['notification_type'] == 1:
        mentions.append(notification)

Isso criará uma lista de notificações que foram acionadas por menções. Cada item na lista será um dicionário. Você pode verificá-lo com algo como:

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