W ramach projektu stworzono bota na GitHubie, który rozwiązuje problemy związane z przymusowym samodzielnym obsługiwaniem użytkowników repozytoriów. Na GitHubie można spotkać repozytoria, których jedyną funkcją jest koordynacja ludzi poprzez system Issue. W niektórych z nich osobom pozostawiającym zgłoszenia sugeruje się wypełnienie formularza. Następnie przychodzi moderator, sprawdza poprawność wypełnienia formularza i dodaje tagi zgodnie z tym, co zostało podane w formularzu (tagi mogą być dodawane tylko przez użytkowników z uprawnieniami, jeśli nie zostały określone w szablonie). Przykładem takiej społeczności jest .
Moderator nie przychodzi natychmiast. Dlatego do weryfikacji formularzy i wykonywania operacji została przedstawiona w wiadomości o działaniu GitHub. Bot napisany jest w Pythonie, jednak musi być uruchamiany przez node.js, ponieważ GitHub ma tylko dwa typy działań — node.js i docker, a dla dockera najpierw ładowany jest ten sam kontener, w którym znajduje się node.js, a do niego ładowany jest kolejny kontener, co jest czasochłonne. Biorąc pod uwagę, że w kontenerze z node.js jest już python3 i wszystko, co potrzebne, rozsądnie jest po prostu załadować w niego zależności, na szczęście są niewielkie.
Cechy:
- Działanie zarządzane jest za pomocą YAML-configu i szablonów Markdown;
- Do każdego szablonu Markdown dodawany jest blok opisujący warunki prawidłowego wypełnienia formularza i pożądane działania;
- Dodawany jest plik konfiguracyjny z globalnymi ustawieniami;
- Formularze składają się z sekcji. Istnieją 2 typy sekcji:
- Tekst swobodny. Działanie może sprawdzić, że użytkownik rzeczywiście włożył wysiłek w wypełnienie tego miejsca. Sensowność tekstu nie jest automatycznie sprawdzana.
- Checkboxy. Można wymagać wypełnienia n checkboxów, tak że 0 {= m1 {= n {= m2 {= całkowita liczba checkboxów w sekcji. Działanie sprawdza, czy checkboxy odpowiadają checkboxom w szablonie. Jeśli checkboxy są poprawnie ustawione, działanie może dodać do zgłoszenia tagi zgodne z checkboxami.
- Jeśli formularz zostanie wypełniony niepoprawnie, działanie informuje użytkownika, jak poprawnie go wypełnić i dodaje specjalną etykietę.
- Jeśli formularz nie zostanie poprawiony w określonym czasie, działanie może zamknąć zgłoszenie. Automatyczne banowanie użytkowników, usuwanie i przenoszenie zgłoszeń nie zostało jeszcze zrealizowane z powodu braku oficjalnego API do potrzebnych działań oraz problemów z przechowywaniem stanu.
- Jeśli problem został rozwiązany, działanie usuwa etykietę.
- Szablony odpowiedzi akcji są oczywiście konfigurowalne.
Źródło: opennet.ru
