Creazione di badge personalizzati con regole personalizzate

Voglio creare un badge personalizzato a cui verranno aggiunte queste regole, il che significa semplicemente che quando un utente realizza le seguenti cose, gli verrà automaticamente assegnato il badge correlato.
Gli utenti devono realizzare le seguenti cose/regole:

  1. L’utente deve aver creato almeno 2 post
  2. L’utente deve aver caricato un’immagine del profilo
  3. L’utente deve aver messo like ad almeno un post

Nota: ho visto la creazione di alcuni badge con l’aiuto di query SQL, in realtà sono molto nuovo a questo, quindi per favore ditemi dove inserire le query SQL (se necessarie) per raggiungere queste regole di cui sopra.

1 Mi Piace

Può aiutare?

4 Mi Piace

Ehi, questo è davvero utile.
Ho abilitato l’opzione delle query SQL, sono bloccato solo con una piccola cosa, dopodiché sarò a posto.

Come visualizzare il database perché la mia regola personalizzata per i badge è complessa, ecco perché ho bisogno di alcune cose:

  1. Come visualizzare il database, in modo da poter costruire la mia query
  2. Come testare questi badge dopo aver costruito le query.

Per favore, rispondi a queste 2 cose, dopodiché potrò dormire sonni tranquilli.

1 Mi Piace

Il modo più semplice è installare il plugin discourse-data-explorer, che fornirà un’interfaccia come questa.

3 Mi Piace

Ho installato il plugin ed eseguito il comando SQL sottostante che mi restituisce gli utenti che soddisfano queste 3 regole, ma non so come convertirlo in un trigger quando un utente agisce su un post.

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

Seguendo questo post Creating triggered custom badge queries ma ancora incapace di crearlo perché sono davvero nuovo a Discourse.

Per favore, aiutami a risolvere questo problema, se riesco a completarlo una volta, potrò creare altri miei badge personalizzati con meno attrito.
@Lhc_fl

1 Mi Piace

Questo è un codice SQL di “Trigger: Aggiornamento giornaliero”;

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

Gli altri trigger dipendono da qualcosa di specifico e non ne consiglio l’uso a meno che tu non trovi un esperto di SQL. (Non ho familiarità con SQL io stesso)

3 Mi Piace

Grazie mille per questo, ho solo tre domande di base:

  1. Cos’è la tabella st e u e qual è l’uso di entrambe queste tabelle e perché queste tabelle non sono visibili nella scheda del plugin explorer?

  2. Quando verrà eseguito questo aggiornamento giornaliero del trigger, per essere specifici, chiedo l’ora.

  3. Qual è l’uso di Esegui query di revoca giornalmente

1 Mi Piace

Per quanto riguarda 1?, questi sono nomi di alias di tabella.

Vedi la riga FROM user_stats st? Sta dicendo alla query che st è l’abbreviazione della tabella user_stats.

Lo stesso vale per l’istruzione JOIN dove dice users u. Sta dicendo che nella query u è un alias per la tabella users in quella query. Gli alias vengono utilizzati per semplificare le query, utilizzare meno digitazione, il che riduce le possibilità di errori.

Per quanto riguarda 3, se abiliti quell’opzione, se un utente non si qualifica più per un badge in base alla query, il badge verrà rimosso dal suo account.

3 Mi Piace

Grazie per aver chiarito i miei dubbi, ora rimane solo il secondo punto

  1. Quando verrà eseguito questo aggiornamento automatico giornaliero, per essere specifici sto chiedendo l’ora.

Oops. Pensavo di aver risposto.

La query viene eseguita ogni 24 ore in base all’ora del giorno in cui hai avviato il container. Quindi ho un’istanza che la esegue intorno alle 0:00 UTC (circa) e un’altra istanza la esegue poco dopo le 6:00 UTC.

Possiamo modificare gli orari in cui questa query verrà eseguita o possiamo modificare questa query in Trigger: quando l'utente agisce su un post o quando l'utente modifica o crea un post?
Se possibile, si prega di modificare la query poiché sono nuovo in questo sistema di discourse, se puoi aiutarmi una volta, da ora in poi potrò creare il mio badge personalizzato.