GitHub lanzo un bot para la moderación automática de problemas
Como parte del proyecto Issuer, se ha preparado un bot para GitHub que resuelve las tareas de moderar automáticamente el sistema de seguimiento en GitHub. En GitHub se pueden encontrar repositorios cuya única función es coordinar personas a través del sistema Issue.
En algunos de ellos, al salir de Issue se le pide que complete un formulario, luego viene un moderador, verifica la corrección de completar el formulario y publica etiquetas de acuerdo con las especificadas en el formulario (las etiquetas solo pueden ser colgadas por un usuario privilegiado si no están especificadas en la plantilla). Un ejemplo de dicha comunidad es la de Open Source Ideas (ideas de código abierto).
El moderador no viene al instante. Por lo tanto, se ha preparado una acción de GitHub presentada en las noticias para validar formularios y realizar operaciones.
El bot está escrito en Python, pero aún debe ser ejecutado a través de node.js, ya que GitHub solo tiene 2 tipos de acciones: node.js y docker y para docker, primero se carga el mismo contenedor que node.js y se carga en el otro contenedor que es largo.
Teniendo en cuenta que python3 y todo lo que necesita está en el contenedor con node.js, es racional simplemente cargar las dependencias en él, ya que son pequeños.
Esta es una acción de GitHub con 3 funciones conectadas para la gestión de problemas.
Comprueba si los problemas entrantes coinciden templateen algún sentido:
Que las secciones no contienen líneas de la plantilla predeterminada (generalmente presente cuando un usuario no se ha preocupado de completar la sección).
Que las secciones que contienen casillas de verificación que se establecerán como etiquetas contienen solo las casillas de verificación presentes en la plantilla original
Que cada sección tiene una cantidad de casillas marcadas en el rango [min, max]
Establece etiquetas de acuerdo con las casillas marcadas.
Cierra automáticamente los problemas si el autor no ha solucionado los problemas resaltados por el linter dentro de algún plazo.
Usar una persona dedicada para asignar etiquetas es una carga, cuano lo mejor es permitir que los usuarios hagan el «autoservicio». Los usuarios pueden asignar algunas etiquetas a los problemas de un subconjunto restringido que se pueden realiza a través de una extensión Markdown y casillas de verificación.
Con ello cuando un usuario marca las casillas de verificación o los botones de radio el bot establece las etiquetas en consecuencia.
De las características que se destacan de este bot que se ha preparado, son las siguientes:
- La acción se controla mediante la configuración de YAML y las plantillas de Markdown;
- Se agrega un bloque a cada plantilla de Markdown que describe las condiciones para el llenado correcto del formulario y las acciones deseadas;
- Se agrega un archivo de configuración con configuraciones globales;
- Los formularios están formados por secciones.
- Hay 2 tipos de secciones:
Texto libre: La acción puede verificar que el usuario se haya molestado en completar algo. El significado del texto no se verifica automáticamente.
En las casillas de verificación se pueden solicitar y/o completar n número de banderas, de modo que 0 {= m1 {= n {= m2 {= número total de banderas en la sección. - La acción verifica que las casillas coincidan con las casillas de la plantilla. Si las banderas están configuradas correctamente, la acción puede colgar en las etiquetas de problema, resp. casillas de verificación.
- Si el formulario se completa incorrectamente, la acción indica al usuario cómo completarlo correctamente y agrega una etiqueta especial.
- Si el formulario no se corrige en un tiempo determinado, la acción puede cerrar el problema. La prohibición automática de usuarios, la eliminación y el traslado del problema aún no se ha implementado debido a la falta de una API oficial para las acciones necesarias y los problemas con el estado de almacenamiento.
- Si se soluciona el problema, la acción elimina la marca.
- Las plantillas de respuesta a la acción son, por supuesto, personalizables.
Finalmente si estás interesado en conocer mas al respecto, puedes consultar los detalles dirigiéndote al siguiente enlace.