V rámci projektu byl připraven bot pro GitHub, který řeší úkoly pro povinné samoobsluhy uživatelů repozitáře. Na GitHubu lze nalézt repozitáře, jejichž jedinou funkcí je koordinace lidí prostřednictvím systému Issue. V některých z nich jsou uživatelé vyzváni k vyplnění formuláře. Poté přijde moderátor, zkontroluje správnost vyplnění formuláře a přidá štítky podle uvedených v formuláři (štítky může přidávat pouze privilegovaný uživatel, pokud nejsou určeny v šabloně). Příklad takové komunity — .
Moderátor nepřichází ihned. Proto pro kontrolu formulářů a provádění operací je představena v novinkách GitHub akce. Bot je napsaný v Pythonu, ale stále ho musíte spustit přes node.js, protože GitHub má pouze 2 typy akcí — node.js a docker, přičemž pro docker se nejprve načte stejný kontejner, kde je také node.js, a do něj se načte ještě jeden kontejner, což trvá dlouho. Vzhledem k tomu, že v kontejneru s node.js je python3 a všechno ostatní potřebné, je rozumné jednoduše načíst závislosti do něj, zejména protože jsou malé.
Vlastnosti:
- Akce je řízena pomocí YAML konfiguračního souboru a Markdown šablon;
- Do každé Markdown šablony se přidává blok, který popisuje podmínky správného vyplnění formuláře a požadované akce;
- Přidává se konfigurační soubor s globálními nastaveními;
- Formuláře se skládají ze sekcí. Existují 2 typy sekcí:
- Volný text. Akce může zkontrolovat, že uživatel se snažil něco vyplnit. Smysluplnost textu se automaticky nekontroluje.
- Checkboxy. Lze požadovat vyplnění n checkboxů, tak že 0 {= m1 {= n {= m2 {= celkový počet checkboxů v sekci. Akce kontroluje, že checkboxy odpovídají checkboxům v šabloně. Pokud jsou checkboxy zadány správně, akce může přidat na issue štítky podle checkboxů.
- Pokud je formulář vyplněn nesprávně, akce instruuje uživatele, jak ho správně vyplnit a přidá zvláštní štítek.
- Pokud formulář není opraven během určité doby, akce může uzavřít issue. Automatické blokování uživatelů, odstranění a přesun issue zatím není implementováno kvůli nedostatku oficiálního API pro potřebné akce a problémům se správou stavu.
- Pokud je problém vyřešen, akce odstraňuje štítek.
- Šablony odpovědí na akce jsou samozřejmě nastavitelné.
Zdroj: opennet.ru
