In het kader van het project Er is een bot ontwikkeld voor GitHub die taken voor dwingend zelfbediening van gebruikers van de repository oplost. Op GitHub zijn er repositories die als enige functie hebben om mensen te coƶrdineren via het Issue-systeem. In sommige daarvan wordt gevraagd om een formulier in te vullen. Vervolgens komt er een moderator, die de juistheid van het ingevulde formulier controleert en tags plaatst volgens de op het formulier aangegeven gegevens (tags kunnen alleen door een geprivilegieerde gebruiker worden geplaatst, als ze niet zijn opgegeven in de sjabloon). Een voorbeeld van zo'n gemeenschap is .
De moderator komt niet onmiddellijk. Daarom is er tijd nodig om formulieren te controleren en acties uit te voeren zoals weergegeven in het nieuws GitHub-actie. De bot is geschreven in Python, maar je moet deze nog steeds uitvoeren via node.js, omdat GitHub maar twee soorten acties heeft ā node.js en docker, waarbij voor docker eerst dezelfde container wordt geladen als die van node.js, en daarin wordt nog een andere container geladen, wat tijd kost. Gezien het feit dat in de node.js-container python3 en al het andere nodige al aanwezig is, is het rationeel om gewoon de afhankelijkheden erin te laden, gelukkig zijn ze klein.
Kenmerken:
- De actie wordt beheerd via een YAML-configuratie en Markdown-sjablonen;
- In elk Markdown-sjabloon wordt een blok toegevoegd dat de voorwaarden voor het correct invullen van het formulier en de gewenste acties beschrijft;
- Er wordt een configuratiebestand met globale instellingen toegevoegd;
- Formulieren bestaan uit secties. Er zijn 2 soorten secties:
- Vrije tekst. De actie kan controleren of de gebruiker moeite heeft gedaan om daar iets in te vullen. De zinvolheid van de tekst wordt automatisch niet gecontroleerd.
- Checkboxen. Je kunt vereisen dat er n checkboxen worden ingevuld, zodat 0 {= m1 {= n {= m2 {= het totaal aantal checkboxen in de sectie. De actie controleert of de checkboxen overeenkomen met die in de sjabloon. Als de checkboxen correct zijn opgegeven, kan de actie tags aan de issue hangen, overeenkomstig de checkboxen.
- Als het formulier onjuist is ingevuld, instrueert de actie de gebruiker hoe deze correct moet worden ingevuld en plaatst een speciale label.
- Als het formulier niet binnen een bepaalde tijd is gecorrigeerd, kan de actie de issue sluiten. Automatische banning van gebruikers, verwijdering en verplaatsing van issues is nog niet geïmplementeerd vanwege het ontbreken van een officiële API voor de gewenste acties en problemen met het opslaan van de status.
- Als het probleem is opgelost, verwijdert de actie het label.
- Antwoordsjablonen voor acties zijn natuurlijk aanpasbaar.
Bron: opennet.ru
