Recientemente en 2.9.0beta2, los usuarios que ya tienen una cuenta pueden hacer clic en los enlaces de invitación. Pero generé enlaces de invitación, hice clic en ellos y decía que me invité a mí mismo y como soy TL2+ y hice clic en 5 enlaces de invitación diferentes, recibí la insignia Champion. Puedes ver una captura de pantalla a continuación. Estos están en los foros de Replit EDU y puedes ver mi perfil aquí.
También creé un enlace de invitación en los foros de Codecademy y dice que me invité a mí mismo allí también, lo que puedes ver a continuación. Mira mi perfil aquí.
Alcanza TL2+ (por defecto), crea enlaces de invitación y luego haz clic en ellos. Dirá que te invitaste a ti mismo en tu perfil y que aceptaste tu invitación, como se muestra arriba. Y si creas suficientes enlaces de invitación, recibirás las insignias Campaigner y Champion.
Este error ya está corregido. ¡Gracias de nuevo a @not-ethan por informarlo! Si notas algo mal con el sistema de invitaciones, háznoslo saber. Estamos trabajando activamente en ello.
hay un error por el cual puedes crear un código de invitación y canjearlo tú mismo, haciendo esto puedes obtener las insignias de invitación, lo cual es molesto. Esto fue mencionado por @not-ethan y se hizo una pull request, pero el error sigue activo. Mi idea era si alguien usa un código de invitación para la web, pero esa persona está conectada, ¡que el código falle!
Gracias por plantear esto de nuevo, Urias. Estamos tratando de no tocar demasiado el sistema de invitaciones en este momento, porque es complejo y hacer cambios puede tener consecuencias no deseadas y no planificadas.
¿Hay alguna manera de eludir este problema cambiando la forma en que se otorga la insignia? Por ejemplo, si la persona que canjea la invitación ya es miembro, ¿no se otorga la insignia de “campaigner” a la persona que creó la invitación?
Esto me parece un problema que probablemente ha existido durante mucho tiempo y ha pasado desapercibido. Otra respuesta podría ser tratar esto como “no hacer nada, funciona según lo diseñado” y dejar que los moderadores de la comunidad lo aborden si les preocupa que las personas abusen de este método para obtener más insignias.
Probablemente necesite revisar mi SQL , pero creo que podría agregar esta línea a la consulta de la insignia para evitar que se otorgue a personas que se han invitado a sí mismas: AND i.invited_by_id <> u2.id
Así que algo como esto:
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) )
¡Genial! Hace tiempo que no juego con el sistema de insignias, pero ahora que lo miro, no veo las insignias relacionadas con las invitaciones en la interfaz de administración de insignias. ¿Quizás estas son insignias del sistema que deben editarse en el núcleo de Discourse?