В рамките на проекта подготвен бот за GitHub, който решава проблеми с принудителното самообслужване на потребителите на репозитория. В GitHub може да се срещнат репозитории, чиято единствена функция е координацията на хора през системата Issue. В някои от тях на оставящите Issue се предлага да попълнят форма. След това идва модератор, проверява правилността на попълнената форма и разпределя тагове в съответствие с указаното във формата (тагът може да се добавя само от привилегирован потребител, ако не е зададен в шаблона). Пример за такава общност — .
Модераторът не идва моментално. Затова за проверка на формите и извършване на операции представеното в новината действие на GitHub. Ботът е написан на Python, но все пак трябва да се стартира през node.js, тъй като GitHub има само 2 типа действия — node.js и docker, като за docker първо се зарежда същият контейнер, където е и node.js, и в него се зарежда още един контейнер, което е бавно. Имайки предвид, че в контейнера с node.js имаме python3 и всичко необходимо, е рационално просто да се добавят зависимостите, тъй като те са малки.
Характеристики:
- Действието се управлява чрез YAML-конфигурация и Markdown-шаблони;
- Във всеки Markdown-шаблон се добавя блок, който описва условията за коректно попълване на формуляра и желаните действия;
- Добавя се конфигурационен файл с глобални настройки;
- Формулярите се състоят от секции. Има 2 типа секции:
- Свободен текст. Действието може да провери, че потребителят е полагал усилия да попълни нещо. Осмислеността на текста не се проверява автоматично.
- Проверки (checkbox). Може да се изисква попълването на n проверки, така че 0 {= m1 {= n {= m2 {= общият брой проверки в секцията. Действието проверява, че проверките съответстват на проверките в шаблона. Ако проверките са зададени правилно, действието може да постави тагове на issue, съответстващи на проверките.
- Ако формулярът е попълнен неправилно, действието инструктира потребителя как да го попълни правилно и поставя специален етикет.
- Ако формулярът не бъде коригиран в рамките на определено време, действието може да затвори issue. Автоматичният бан на потребителите, изтриването и преместенето на issue все още не е реализирано поради липса на официално API за необходимите действия и проблеми с съхранението на състоянието.
- Ако проблемът е отстранен, действието премахва маркера.
- Шаблоните за отговори за действия, разбира се, могат да бъдат настроени.
Източник: opennet.ru
