Emittent - GitHub Aktioun fir Selbstservice fir Repository Benotzer ze zwéngen

An de Grenze vum Projet Issuer подготовлен бот для GitHub, решающий задачи по принудительному самообслуживанию пользователей репозитория. На GitHub можно встретить репозитории, единственная функция которых — координация людей через систему Issue. В некоторых из них оставляющим Issue предлагается заполнить форму. Потом приходит модератор, проверяет правильность заполнения формы, и развешивает теги в соответствии с указанными в форме (теги может вешать только привилегированный пользователь, если они не заданны в шаблоне). Пример такого сообщества — open-source-ideas/open-source-ideas.

Модератор приходит не моментально. Поэтому для проверки форм и выполнения операций virbereet представленное в новости GitHub-действие. Бот написан на Python, но запускать его всё равно приходится через node.js, так как у GitHub всего 2 типа действий — node.js и docker, причём для docker сначала грузится тот же контейнер, где и node.js, и в него грузится ещё один контейнер, что долго. Учитывая, что в контейнере с node.js python3 и всё остальное нужное и так есть, рационально просто подгрузить в него зависимости, благо что они небольшие.

Features:

  • Действие управляется с помощью YAML-конфига и Markdown-шаблонов;
  • В каждый Markdown-шаблон добавляется блок, описывающий условия корректного заполнения формы и желаемые действия;
  • Добавляется файл конфигурации с глобальными настройками;
  • Формы состоят из секций. Есть 2 типа секций:
    • Свободный текст. Действие может проверить, что пользователь потрудился заполнить туда что-нибудь. Осмысленность текста автоматически не проверяется.
    • Флажки (checkbox). Можно потребовать заполнить n флажков, такое что 0 {= m1 {= n {= m2 {= общее число флажков в секции. Действие проверяет, что флажки соответствуют флажкам в шаблоне. Если флажки заданы правильно, действие может повесить на issue теги, соотв. флажкам.
  • Если форма заполнена неправильно, то действие инструктирует пользователя, как её правильно заполнить и вешает специальную метку.
  • Если форма не исправлена в течение определённого времени, то действие может закрыть issue. Автоматический бан пользователей, удаление и перемещение issue пока не реализовано в связи с отсутствием официального API для нужных действий и проблемами с хранением состояния.
  • Если проблема устранена, то действие удаляет метку.
  • Шаблоны ответов действия, разумеется, настраиваются.

Source: opennet.ru

Setzt e Commentaire