Tenemos un usuario bloqueado en el nivel de confianza 0. Sé que hay límites de publicación para los usuarios en TL0, pero me cuesta discernir si los límites de publicación son integrales o por día.
Esta publicación indica que el límite no es en la cantidad total de publicaciones:
Pero esta publicación parece sugerir que en realidad es un límite general.
Espero que las restricciones de publicación para TL0 puedan ser por día, no en general, ya que no encuentro ningún otro método para restringir la cantidad que publican algunos usuarios sin afectar a todos los usuarios. Pero, no puedo obtener una imagen clara de cómo se restringen específicamente los usuarios de TL0.
Los usuarios de TL0 están sujetos a límites del “primer día” después de la creación de la cuenta. Estos son:
max_topics_in_first_day (predeterminado: 3)
max_replies_in_first_day (predeterminado: 10) Estos restringen el número de temas/respuestas que un usuario puede crear en las primeras 24 horas después de su primera publicación. Después, estos límites ya no se aplican.
Restricciones por tema para TL0:
newuser_max_replies_per_topic (predeterminado: 3): número máximo de respuestas permitidas por un nuevo usuario en un solo tema antes de que alguien más responda. Esto es para evitar spam en los temas, no publicaciones generales.
No hay un límite general o permanente en el total de publicaciones para usuarios TL0. Después del período inicial del “primer día”, los usuarios TL0 se rigen por los límites generales de todo el sitio (max_topics_per_day, etc.), no por un límite estricto específico de TL0.
Terminé creando una solución alternativa utilizando un par de herramientas diferentes (¡mi código no es lo suficientemente bueno para crear un plugin personalizado!). Probó bien y funciona.
Creé un nuevo grupo, restricted-users
Creé un formulario de asistente personalizado, restringido al grupo de moderadores
Creé una nueva categoría visible solo para mods, restricted-users-admin y reemplacé el compositor con el formulario de asistente personalizado.
Cuando a un usuario se le debe limitar la capacidad de publicar, un mod completa el formulario de asistente personalizado. El formulario pregunta qué usuario debe agregarse al grupo y en qué fecha debe eliminarse.
El envío del formulario crea un nuevo tema en restricted-users-admin
Creé un webhook para esta categoría para enviar cualquier tema nuevo creado.
Cuando se recibe el webhook, primero se verifica si el usuario ya está en el grupo y se crea una respuesta de publicación con esa información si es así. Si el usuario no está en el grupo, se agrega al grupo, luego se espera hasta la fecha/hora de finalización dada, y luego se elimina del grupo.
Creé un webhook para cualquier publicación de usuarios en el grupo restricted-users.
Cuando el usuario restringido publica y se envía el webhook, se realiza una llamada a la API para determinar cuántas publicaciones ha realizado el usuario ese día (utilicé el mismo día en lugar de un período de 24 horas, supongo que fue más fácil que coincidiera la fecha). Aquí filtré los mensajes privados.
Si es la penúltima publicación que el usuario tiene disponible, la API envía un mensaje privado al usuario informándole que se está acercando a su límite y que le queda una publicación más hoy. Como prueba de concepto, establecí el límite en 5 publicaciones, por lo que esto envía un mensaje privado después de la cuarta publicación del usuario.
Si es su última publicación, la API silencia al usuario durante 24 horas.
Cuando el usuario es eliminado del grupo restricted-users, la API envía una respuesta de publicación al tema original en la categoría restricted-users-admin.
Este es un territorio de casos extremos para nosotros: es una especie de “último recurso”, después de mucha comunicación y moderadores trabajando con el usuario. No anticipo que tengamos tanto tráfico en esto como para que se vuelva engorroso, es un número muy, muy pequeño de usuarios. Somos una organización de membresía y nuestro foro de Discourse sirve como un repositorio para todo tipo de recursos, por lo que los miembros deberían poder acceder a él. Por lo tanto, necesitamos encontrar soluciones diferentes en lugar de suspender.