Recentemente in 2.9.0beta2 gli utenti che hanno già un account possono fare clic sui link di invito. Ma i link di invito che ho generato e su cui ho fatto clic hanno detto che mi sono invitato da solo e poiché sono TL2+ e ho fatto clic su 5 diversi link di invito miei, ho ricevuto il badge Champion. Puoi vedere uno screenshot qui sotto. Questi sono nei forum Replit EDU e puoi visualizzare il mio profilo qui.
Ho anche creato un link di invito nei forum Codecademy e dice che mi sono invitato da solo anche lì, come puoi vedere sotto. Visualizza il mio profilo qui.
Raggiungi TL2+ (per impostazione predefinita), crea link di invito che poi fai clic. Dirà che ti sei invitato da solo sul tuo profilo e che hai accettato il tuo invito, come mostrato sopra. E se crei abbastanza link di invito, riceverai i badge Campaigner e Champion.
Non ho mai guardato il codice di discourse personalmente, ma qualcosa del genere potrebbe funzionare. (questo è in JS perché è quello che conosco meglio)
Questo bug è ora risolto. Grazie ancora @not-ethan per averlo segnalato! Se noti qualcosa che non va nel sistema di invito, faccelo sapere. Ci stiamo lavorando attivamente.
c’è un bug per cui puoi creare un codice di invito e riscattarlo tu stesso, in questo modo puoi ottenere i badge di invito, il che è fastidioso. Questo è stato menzionato da @not-ethan ed è stata fatta una pull request, ma il bug è ancora attivo. La mia idea era se qualcuno usasse un codice di invito per il web, ma quella persona fosse loggata, il codice fallisse!
Grazie per aver sollevato nuovamente la questione, Urias. Stiamo cercando di non toccare troppo il sistema di inviti al momento, perché è complesso e apportare modifiche può avere conseguenze impreviste e non pianificate.
C’è un modo per aggirare questo problema cambiando il modo in cui viene assegnato il badge? Ad esempio, se la persona che riscatta l’invito è già membro, non assegnare il badge del promotore alla persona che ha creato l’invito?
Questo mi sembra un problema che probabilmente esiste da molto tempo ed è passato inosservato. Un’altra soluzione potrebbe essere quella di trattarlo come “non fare nulla, funziona come previsto” e lasciare che siano i moderatori della community a occuparsene se sono preoccupati che le persone abusino di questo metodo per ottenere più badge.
Probabilmente il mio SQL necessita di un controllo , ma credo che potresti aggiungere questa riga alla query del badge per evitare che venga concessa a persone che si sono invitate da sole - AND i.invited_by_id <> u2.id
Quindi qualcosa del genere:
SELECT u.id user_id, current_timestamp granted_at
FROM users u
WHERE u.id IN (
SELECT invited_by_id
FROM invites i
JOIN invited_users iu ON iu.invite_id = i.id
JOIN users u2 ON u2.id = iu.user_id
WHERE i.deleted_at IS NULL
AND i.invited_by_id <> u2.id
AND u2.active
AND u2.trust_level >= 0
AND u2.silenced_till IS NULL
GROUP BY invited_by_id
HAVING COUNT(*) >= 1
) AND u.active AND u.silenced_till IS NULL AND u.id > 0 AND
(:backfill OR u.id IN (:user_ids) )
Fantastico! Non gioco con il sistema dei badge da un po’ di tempo, ma ora che guardo non vedo i badge relativi agli inviti nell’interfaccia di amministrazione dei badge. Forse si tratta di badge di sistema che devono essere modificati nel core di Discourse?