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