Criando badge personalizado com regras personalizadas

Quero criar um distintivo personalizado no qual estas regras serão adicionadas, o que simplesmente significa que quando o usuário realizar as tarefas abaixo, o distintivo relacionado será dado a ele automaticamente.
Os usuários precisam realizar estas tarefas/regras abaixo:

  1. O usuário deve ter criado pelo menos 2 posts
  2. O usuário deve ter carregado uma foto de perfil
  3. O usuário deve ter curtido pelo menos um post

Observação: Vi algumas criações de distintivos com a ajuda de consultas SQL. Na verdade, sou muito novo nisso, então, por favor, me diga onde colocar as consultas SQL (se necessário) para alcançar estas regras acima.

Pode ajudar?

Ei, isso é muito útil.
Ativei a opção de consultas SQL, só estou preso com uma pequena coisa depois disso, estarei pronto.

Como visualizar o banco de dados porque minha regra de selo personalizada é complexa, é por isso que preciso de algumas coisas -

  1. Como visualizar o banco de dados, para que eu possa construir minha própria consulta
  2. Como testar esses selos após construir as consultas.

Por favor, responda a essas 2 coisas depois disso, poderei dormir em paz.

A maneira mais fácil é instalar o plugin discourse-data-explorer, que fornecerá uma interface como esta.

Instalei o plugin e executei o comando SQL abaixo, que me retorna os usuários que cumprem estas 3 regras, mas não sei como convertê-lo em um gatilho quando um usuário age em uma postagem.

Comando SQL -
select users.username, user_stats.user_id from user_stats Inner Join users ON user_stats.user_id = users.id where post_count = 2 AND likes_given = 1 AND uploaded_avatar_id > 0

Segui este post Creating triggered custom badge queries, mas ainda não consegui criar porque sou muito novo no Discourse.

Por favor, ajude-me a resolver isso, se eu conseguir completar isso uma vez, poderei criar meus outros emblemas personalizados com menos atrito.
@Lhc_fl

Este é um código SQL de “Trigger: Atualizar diariamente”;

SELECT st.user_id user_id, current_timestamp granted_at
FROM user_stats st
JOIN users u
ON st.user_id = u.id
WHERE st.post_count >= 2 AND st.likes_given >= 1 AND u.uploaded_avatar_id > 0

Os outros triggers dependem de algo específico e não recomendo usá-los a menos que você encontre um especialista em SQL. (Eu mesmo não estou familiarizado com SQL)

Muito obrigado por isso, tenho apenas três perguntas básicas -

  1. O que é a st e u table e qual é o uso de ambas as tabelas e por que essas tabelas não são visíveis na guia do plugin explorer

  2. Quando esta atualização de gatilho diária será executada, para ser específico, estou perguntando sobre a hora.

  3. Qual é o uso de Executar consulta de revogação diariamente

Com relação a 1?, esses são nomes de alias de tabela.

Você vê a linha FROM user_stats st? Isso está dizendo à consulta que st é uma abreviação para a tabela user_stats.

O mesmo vale para a instrução JOIN, onde diz users u. Isso significa que, na consulta, u é um alias para a tabela users nessa consulta. Aliases são usados para simplificar consultas, usar menos digitação, o que reduz as chances de erros.

Com relação a 3, se você habilitar essa opção, quando um usuário não se qualificar mais para um distintivo com base na consulta, o distintivo será removido da conta dele.

Obrigado por esclarecer minhas dúvidas, agora resta apenas o segundo ponto

  1. Quando esta atualização de gatilho será executada diariamente, para ser específico, estou perguntando sobre a hora.

Opa. Pensei que já tinha respondido.

A consulta é executada a cada 24 horas com base na hora do dia em que você iniciou o contêiner. Portanto, uma instância a executa por volta das 0:00 UTC (aproximadamente) e outra instância a executa um pouco depois das 6:00 UTC.

Podemos alterar os horários em que esta consulta será executada ou podemos modificar esta consulta para Gatilho: quando o usuário age em uma postagem ou quando o usuário edita ou cria uma postagem?
Se possível, por favor, altere a consulta, pois sou novo neste sistema de discurso. Se você puder me ajudar uma vez, da próxima vez poderei criar meu próprio distintivo personalizado.