Incentivar sinalizadores 'Notificar Usuários' PMs

Queremos incentivar os usuários a enviar mais mensagens privadas sobre feedbacks controversos ou pessoais em posts (e fazê-lo de maneira civilizada e amigável…), em vez de postar publicamente e possivelmente desviar a conversa do tema. Aqui está o emblema:

A consulta:

SELECT p.user_id, current_timestamp AS granted_at
FROM posts AS p
JOIN topics t on t.id = p.topic_id
WHERE t.archetype = 'private_message'
AND t.title LIKE 'Your post in "%"'
AND p.post_number = 1
AND p.like_count >= 1
AND (:backfill OR p.user_id IN (:user_ids))
GROUP BY p.user_id
HAVING count(*) >= 1

Não encontrei um gatilho específico para sinalizar mensagens, então a consulta usa o título padrão “Your post in …”. Eu diria que o emblema é fácil de manipular ou burlar de várias maneiras, mas ainda assim alcançaria seu objetivo, apenas dando mais visibilidade a esse recurso e comunicando que essa é uma ação positiva para a comunidade.

Poderia ser este baseado na post_action para ‘Notificar Usuário’?

Algo como:

SELECT pa.user_id, current_timestamp AS granted_at
FROM post_actions pa
  JOIN posts p ON p.id = pa.related_post_id
WHERE pa.post_action_type_id = 6
  AND p.like_count >= 1
  AND (:backfill OR p.user_id IN (:user_ids))
GROUP BY pa.user_id
HAVING COUNT(*) >= 1

Na verdade, acho que isso se refere a links na postagem em que a bandeira foi baseada, não ao PM. Pode precisar de um pequeno ajuste.

Uma rápida alteração na junção para tornar p.id = pa.related_post_id faz o trabalho, eu acho. :+1:

Acho que o HAVING só é necessário se você quiser conceder uma versão Prata e Ouro de mais de um.