Som en del af projektet Der er forberedt en bot til GitHub, der løser opgaver om tvungen selvbetjening af repository-brugere. På GitHub kan man finde repositories, hvis eneste funktion er at koordinere folk gennem Issue-systemet. I nogle af dem bliver dem, der laver Issue, bedt om at udfylde en formular. Derefter kommer en moderator, tjekker formularens korrekthed og hænger tags op i overensstemmelse med dem, der er angivet i formularen (tags kan kun hænges op af en privilegeret bruger, hvis de ikke er angivet i skabelonen). Et eksempel på et sådant fællesskab — .
Moderatoren kommer ikke øjeblikkeligt. Derfor for at tjekke formularer og udføre operationer præsenteres i nyheden GitHub-handlingen. Bot'en er skrevet i Python, men den skal stadig køres gennem node.js, da GitHub kun har 2 typer handlinger — node.js og docker, og for docker indlæses først den samme container som node.js, og der indlæses endnu en container i den, hvilket tager tid. Da containeren med node.js har python3 og alt andet nødvendigt, er det fornuftigt bare at indlæse afhængigheder i den, heldigvis er de små.
Egenskaber:
- Handlingen styres ved hjælp af YAML-konfiguration og Markdown-skabeloner;
- Hver Markdown-skabelon får et blok, der beskriver vilkårene for korrekt udfyldelse af formularen og ønskede handlinger;
- Der tilføjes en konfigurationsfil med globale indstillinger;
- Formularer består af sektioner. Der er 2 typer sektioner:
- Fri tekst. Handlingen kan kontrollere, at brugeren har gjort sig umage med at udfylde noget der. Men meningsfuldheden af teksten kontrolleres automatisk ikke.
- Checkboxe. Man kan kræve udfyldning af n checkboxe, så 0 {= m1 {= n {= m2 {= det samlede antal checkboxe i sektionen. Handlingen tjekker, at checkboxene svarer til dem i skabelonen. Hvis checkboxene er angivet korrekt, kan handlingen hænge tags på issue, der svarer til checkboxene.
- Hvis formularen er udfyldt forkert, instruerer handlingen brugeren i, hvordan den skal udfyldes korrekt, og hænger en særlig markering op.
- Hvis formen ikke rettes inden for en bestemt tid, kan handlingen lukke issue. Automatisk banning af brugere, sletning og flytning af issues er endnu ikke implementeret på grund af manglende officiel API til de nødvendige handlinger og problemer med tilstandslagring.
- Hvis problemet er løst, sletter handlingen mærket.
- Skabeloner til svar på handlinger kan naturligvis tilpasses.
Kilde: opennet.ru
