În cadrul proiectului A fost pregătit un bot pentru GitHub, care rezolvă problemele legate de auto-serviciul forțat al utilizatorilor de repository. Pe GitHub pot fi întâlnite repository-uri, a căror unică funcție este coordonarea persoanelor prin sistemul Issue. În unele dintre acestea, celor care lasă un Issue li se propune să completeze un formular. Apoi vine un moderator, verifică corectitudinea completării formularului și adaugă etichete conform celor specificate în formular (etichetele pot fi adăugate doar de utilizatori privilegiați, dacă nu sunt incluse în șablon). Un exemplu de astfel de comunitate — .
Moderatorul nu vine imediat. Prin urmare, pentru a verifica formularele și a efectua operațiuni se utilizează acțiunea prezentată în știre GitHub. Botul este scris în Python, dar trebuie totuși să fie pornit prin node.js, deoarece GitHub are doar două tipuri de acțiuni — node.js și docker, iar pentru docker se încarcă inițial același container ca și pentru node.js, și în acesta se încarcă un alt container, ceea ce durează mult. Având în vedere că în containerul cu node.js există python3 și tot ce este necesar, este rațional să se încarce pur și simplu dependențele în el, din fericire acestea sunt mici.
Caracteristici:
- Acțiunea este controlată prin intermediul unui fișier de configurare YAML și a șabloanelor Markdown;
- Fiecare șablon Markdown are un bloc adăugat, care descrie condițiile pentru completarea corectă a formularului și acțiunile dorite;
- Se adaugă un fișier de configurare cu setări globale;
- Formularele sunt compuse din secțiuni. Există două tipuri de secțiuni:
- Text liber. Acțiunea poate verifica dacă utilizatorul a depus efort pentru a completa ceva acolo. Sensul textului nu este verificat automat.
- Casete de selectare (checkbox). Se poate solicita completarea a n casetelor, având în vedere că 0 {= m1 {= n {= m2 {= numărul total de casete din secțiune. Acțiunea verifică dacă casetele corespund casetelor din șablon. Dacă casetele sunt corect stabilite, acțiunea poate adăuga etichete pe issue-uri corespunzătoare casetelor.
- Dacă formularul este completat incorect, acțiunea oferă utilizatorului instrucțiuni despre cum să îl completeze corect și adaugă o etichetă specială.
- Dacă formularul nu este corectat într-un interval de timp stabilit, acțiunea poate închide problema. Interzicerea automată a utilizatorilor, ștergerea și mutarea problemelor nu au fost încă implementate din cauza lipsei unui API oficial pentru acțiunile necesare și a problemelor legate de stocarea stării.
- Dacă problema este rezolvată, acțiunea va șterge eticheta.
- Modelele de răspuns ale acțiunilor sunt, desigur, personalizabile.
Sursa: opennet.ro
