Issuer - GitHub-дія для примусового самообслуговування користувачів репозиторію

В рамках проекту Емітент підготовлений бот для GitHub, який вирішує завдання з примусового самообслуговування користувачів репозиторію. На GitHub можна зустріти репозиторії, єдиною функцією яких є координація людей через систему Issue. Деякі з них залишають Issue пропонується заповнити форму. Потім приходить модератор, перевіряє правильність заповнення форми і розвішує теги відповідно до зазначених у формі (теги може вішати тільки привілейований користувач, якщо вони не задані в шаблоні). Приклад такого співтовариства open-source-ideas/open-source-ideas.

Модератор приходить не миттєво. Тому для перевірки форм та виконання операцій підготовлено представлена ​​в новинах 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 поки не реалізовано у зв'язку з відсутністю офіційного API для потрібних дій та проблемами зі збереженням стану.
  • Якщо проблема усунена, то дія видаляє мітку.
  • Шаблони відповідей дії, зрозуміло, налаштовуються.

Джерело: opennet.ru

Додати коментар або відгук