Como funciona el karma
El karma mide la participacion y la contribucion activa en el servidor. Los valores que se muestran abajo se leen del estado actual de la configuracion.
1. Mensajes (participacion)
Cada mensaje publicado puede otorgar karma segun el canal donde se escribe:
- Generico: 1 pts - cualquier canal de texto.
- Tecnologia: 2 pts - canales bajo la categoria de tecnologia.
- Principal: 3 pts - el canal designado como "main".
- Pregunta: 3 pts. La primera respuesta a una pregunta gana un bonus de +2 pts.
Para evitar spam, cada usuario tiene un cooldown de 60s por canal y un tope de 5 pts/hora en mensajes genericos.
2. Contribuciones (canales especiales)
Compartir trabajo o aprendizaje vale mas que un mensaje suelto:
- Recurso compartido: 20 pts .
- Proyecto enviado: 50 pts .
- Blog tecnico: 100 pts .
2b. Reto diario de codigo
El staff publica retos de programacion en el foro. La primera solucion que pasa el 100% de los casos de prueba otorga karma segun la dificultad:
- Basico: 5 pts.
- Intermedio: 10 pts.
- Dificil: 20 pts.
- Insano: 40 pts.
Un solo premio por reto por persona: los envios posteriores que tambien pasan no suman puntos. La evaluacion es automatica (sandbox de codigo), no la decide una IA.
Estos puntos cuentan como contribucion, igual que los recursos, proyectos y articulos de blog: aparecen en esa categoria en tu tarjeta de /karma.
3. Reconocimientos entre miembros
Otros miembros pueden otorgar karma directamente con comandos:
/thanks- base de 10 pts. Max 1/dia por receptor y 3/semana por emisor./endorse- base de 20 pts. Requiere nivel >= 5. Max 1/dia y 3/semana.
4. Multiplicador de hashtag
Mensajes que incluyen #mexicodev reciben un multiplicador de x1.5.
5. Autoridad del que da karma
Cuando un miembro otorga karma a otro (via /thanks o /endorse), su nivel actual escala el premio:
karma otorgado = base x (1 + nivel_emisor / 20)
Un emisor con nivel 5 y divisor 20 multiplica la base por 1.25 (+25%). Cuanto mayor el nivel, mas peso tiene su reconocimiento.
6. Decaimiento mensual
El dia 1 de cada mes, el sistema reduce el karma acumulado en 5%. El alcance del decaimiento es: participation_contribution.
Esto evita que miembros muy antiguos dominen permanentemente el leaderboard sin actividad reciente.
7. Niveles y roles
Los niveles son tramos de puntos minimos definidos en Niveles. A cada nivel se le puede asociar un rol de Discord y el bot lo asigna automaticamente cuando un miembro cruza el umbral.
8. Snapshots y persistencia
El sistema toma un snapshot del estado de cada miembro cada 24h. Los eventos individuales se buffer-ean en memoria y se persisten periodicamente para reducir presion en la base de datos.