Bot, który ponagla użytkowników, aby oznaczali swój kod tagami ```

23

Cześć,
jak prawdopodobnie nikt nie zauważył, od pewnego czasu działa sobie bot, który ponagla użytkowników, którzy nie zastosowali tagów ``` do swojego kodu, dodając komentarze do ich postów - niejaki @Tasmanian Devil.

Na razie działa w bardzo ograniczonym zakresie, dopiero od wczoraj zaczął analizować jakiekolwiek fora poza C# i .NET, a do tego tych komentarzy praktycznie nie dodaje, dopóki jawnie tego nie zrobię (tj. bot działa w tle szukając problemów, a potem dopiero wsadowo odpalam komentowanie - chociaż ma możliwość robić jedno i drugie naraz). Przynajmniej na razie.

Przykładowa sesja wygląda mniej więcej tak:
Annotation 2019-10-26 222804.png

To, co jest w tym momencie, jest to rozwinięcie tego małego pomysłu, który pokazałem ~3 tygodnie temu.

Cały sposób oparty jest o to, że chciałem zobaczyć sobie jak działa ML.NET (i jego auto-train) - stąd bot jest oparty o uczenie maszynowe, wykorzystuje binarny klasyfikator "kod"-"nie kod". Ogólna zasada działania jest taka, że pobiera posty z forum, usuwa z nich wszystko, co jest oznaczone jako kod (tj. w znacznikach <code>), a potem w pozostałym tekście klasyfikuje i jeśli znajdzie coś, co wygląda jak kod, z prawdopodobieństwem przekraczającym 0,99, to zapisuje to w logach (albo wysyła komentarz). Po czym "idzie spać" i znów wraca po jakimś czasie, pobiera posty z forum i tak dalej.

Napisany jest oczywiście w C#, dla .NET Core 3.0, u mnie na serwerze działa sobie w kontenerze Dockera. Wykorzystuje zarówno Coyote API, jak i bezczelne scrapowanie strony, bo nie do wszystkiego API istnieje ;)

Przykładowy efekt działania w komentarzach do 1628334.

Źródła są na GH: https://github.com/ktos/Eleia, zresztą binarki też (dla Linuksa i dla Windows), aktualna wersja to 0.7.1.

Co można by zrobić lepiej?

2
Ktos napisał(a):

Cześć,
jak prawdopodobnie nikt nie zauważył, od pewnego czasu działa sobie bot, który ponagla użytkowników, którzy nie zastosowali tagów ``` do swojego kodu, dodając komentarze do ich postów - niejaki @Tasmanian Devil.

Jeśli ten bot wyjdzie z fazy testów to można by (a raczej należy) go połączyć z kontem @4programmers.net, tak aby przynajmniej nie cuchnął lewymi botami – w końcu nazwa @Tasmanian Devil nikomu nic nie mówi.

Przykładowy efekt działania w komentarzach do 1628334.

Podejrzewam, że użytkownicy mimo wszystko będą olewać tego typu komentarze i niczego zmieniać nie będą, więc kolejną funkcją do zaimplementowania w tym bocie powinna być funkcja usuwania bałaganiarskich postów, jeśli post nie ulegnie modyfikacji przez autora. Cukierek albo psikus. :]

2

Komentarz komentarzem, ale działanie bota powinno polegać na automatycznym oznaczaniu wykrytego kodu znacznikami i wysyłaniu edycji do akceptacji moderatorowi, gdzie moderator może wprowadzić - jesli trzeba, odpowiednie poprawki i zatwierdzić. Lub wysyłać powiadomienie użytkownikowi o propozycji edycji, post wstępnie zedytowany do zatwierdzenia, coś jak na StackOverflow. Chociaż, co do drugiego, tak jak napisał @furious programming użytkownicy raczej będą to olewać, ale może nie zawsze - wtedy, gdy użytkownik oleje temat, dopiero moderator może dostać powiadomienie.

2

@furious programming:

Jeśli ten bot wyjdzie z fazy testów do można by (a raczej należy) go połączyć z kontem @4programmers.net, tak aby przynajmniej nie cuchnął lewymi botami – w końcu nazwa @Tasmanian Devil nikomu nic nie mówi.

Hej, nie cuchnie "lewymi" botami, w końcu jest w oficjalnej grupie "boty" ;)
Nie jestem pewien, czy oficjalne konto to jest to - osobiście widziałbym go jako oddzielny byt. Trzeba by to przemyśleć - i zapytać co o tym sądzi władza zwierzchnia :)

Podejrzewam, że użytkownicy mimo wszystko będą olewać tego typu komentarze i niczego zmieniać nie będą, więc kolejną funkcją do zaimplementowania w tym bocie powinna być funkcja usuwania bałaganiarskich postów, jeśli post nie ulegnie modyfikacji przez autora.

Chyba bym się bał dawać maszynie uprawnienia usuwania czegokolwiek. Tak się zaczyna - najpierw usuwa posty, a nim się obejrzysz - próbuje usunąć Sarę Connor ;)

@Meini:

Komentarz komentarzem, ale działanie bota powinno polegać na automatycznym oznaczaniu wykrytego kodu znacznikami i wysyłaniu edycji do akceptacji moderatorowi, gdzie moderator może wprowadzić - jesli trzeba, odpowiednie poprawki i zatwierdzić. Lub wysyłać powiadomienie użytkownikowi o propozycji edycji, post wstępnie zedytowany do zatwierdzenia, coś jak na StackOverflow.

Pomysł jak najbardziej sensowny, ale będzie to wymagało zmian w samym Coyote - obecnie nie ma takich funkcji.
W zasadzie w ogóle można by to było "spiąć" z Coyote, w taki sposób, aby system forum sam stwierdzał, przed dodaniem posta, że "coś jest nie tak" i być może wymaga zmian - i wtedy nie potrzeba by zewnętrznego narzędzia, które "scrapuje" forum.

1
Ktos napisał(a):

Nie jestem pewien, czy oficjalne konto to jest to - osobiście widziałbym go jako oddzielny byt. Trzeba by to przemyśleć - i zapytać co o tym sądzi władza zwierzchnia :)

To tylko sugestia. IMO użytkownikom (przede wszystkim nowym, którzy nie są obeznani z serwisem) łatwiej by było zrozumieć że komentarz zamieścił zaaprobowany bot, jeśli by jego nick był skojarzony z nazwą serwisu.

Chyba bym się bał dawać maszynie uprawnienia usuwania czegokolwiek. Tak się zaczyna - najpierw usuwa posty, a nim się obejrzysz - próbuje usunąć Sarę Connor ;)

Nie ma się czego bać, jeśli tylko wiesz jak on działa i kiedy słusznie wykrywa bałagan. :d

Nad tym tematem pasowało by się zastanowić, dlatego że mógłby on raportować posty – nie trzeba by liczyć na przypadkowe odkrycie czy na pomoc fizycznych użytkowników. Myślę że ten bot ma spory potencjał i może znacznie pomóc w utrzymaniu porządku w serwisie.

0

Mam nadzieję, że nie wywołam offtopu, ale zastanawiam się, jaki wpływ na zdolności w programowaniu ma myślenie perfekcjonistyczne. Są osoby, dla których znaczenie ma każdy piksel i każdy znak, i nawet niewidzialny dla oka biały znak przed końcem linii może ich "kłuć w oczy". Dla jednych formatowanie nie ma żadnego znaczenia, a inni nie będą mogli zostawić swojego kodu, dopóki nie będzie wyglądał idealnie (w ich własnej ocenie). Wiem, że opisałem dwa skrajne przypadki, i że wielu osobom wystarczy coś, co jest wystarczająco dobre lub po prostu działa, ale nie musi być idealne.

Kiedyś na tym forum założyłem wątek z podobnym pytaniem, ale wtedy chodziło mi o to, jak w programowaniu radzą sobie programiści, którzy nie przejmują się poprawną pisownią (gramatyką, ortografią i interpunkcją). Zostałem oskarżony o to, że uważam się za kogoś lepszego, mimo że moja wypowiedź nie miała żadnej tezy, nie wspomniałem o moim sposobie pisania i nie napisałem o mojej własnej opinii na ten temat.

Umiem sobie wyobrazić, że programiści, którzy nie zwracają uwagi na precyzję, mogą w pewnych obszarach programowania sobie lepiej radzić, niż tacy, którzy zwracają uwagę na każdy szczegół. Wiem, że charakter, dysgrafia lub zaburzenia osobowości związane ze skrajnym perfekcjonizmem nie muszą przekładać się na zdolności w myśleniu programistycznym. Na przykład mój CTO jest bardzo dobrym programistą, ale według mnie jest bardzo niedokładny. W jego przypadku niedokładność jest czymś, co można pominąć, żeby zyskać na czasie kosztem braku elegancji.

Zastanawiam się, jak osoba, której myślenie jest chaotyczne, "dogaduje się" z super precyzyjnym komputerem, który rozumie tylko taki kod, który jest napisany według ściśle określonych zasad i nie przyjmuje kompromisów. Tak samo osoby, które nie formatują w prawidłowy sposób swoich postów na forum, bardzo ryzykują bycie niezrozumianym przez innych forumowiczów, mimo że chcieliby być zrozumieni, żeby uzyskać poprawną odpowiedź.

1

Pomysł fajny, tylko co to da? W przykładowym poście, autor od 3 dni nie poprawił posta.

Tutaj taki bot byłby fajny, jakby stworzyć grupę użytkowników, którzy dostają prawo do edycji takich postów by wstawić te znaczniki.

W sensie bot zaznacza, post wymaga znaczników kodu, daje uprawnienia do edycji tego konkretnego posta grupie userow, ktoś z grupy dokonuje zmiany w poście.

4
Panczo napisał(a):

Pomysł fajny, tylko co to da? W przykładowym poście, autor od 3 dni nie poprawił posta.

Z tym wątkiem jest taki problem, że założył go nowy użytkownik i po jakimś (krótkim) czasie traci możliwość edycji posta. Blokada edycji została wprowadzona po to, aby użytkownicy nie dewastowali swoich starych postów po uzyskaniu odpowiedzi lub w ramach zacierania po sobie śladów (a zdarzało się to wielokrotnie).

Ale aby uniknąć takich sytuacji, zasugerowałem, że oprócz przypominania użytkownikom o formatowaniu treści, bot powinien także co najmniej wysyłać raport do moderatorów, jeśli użytkownik ma w dupie prośby lub jeśli opcja edycji posta jest dla niego niedostępna.

Zresztą mechanizm wykrywania bajzlu w poście powinien być zaimplementowany w Coyocie, tak aby blokował możliwość wysłania posta lub przynajmniej ostrzegał użytkownika, że niesformatowana treść najprawdopodobniej przyciągnie moderatora, który mu wątek wywali.

2

Ale aby uniknąć takich sytuacji, zasugerowałem, że oprócz przypominania użytkownikom o formatowaniu treści, bot powinien także co najmniej wysyłać raport do moderatorów, jeśli użytkownik ma w dupie prośby lub jeśli opcja edycji posta jest dla niego niedostępna.

Ok, racja, raport do moderatorów dodam.

Zresztą mechanizm wykrywania bajzlu w poście powinien być zaimplementowany w Coyocie, tak aby blokował możliwość wysłania posta lub przynajmniej ostrzegał użytkownika, że niesformatowana treść najprawdopodobniej przyciągnie moderatora, który mu wątek wywali.

Docelowo - na pewno tak. Nie wiem tylko jak to zaimplementować bezpośrednio w systemie, ale zapewne istnieją jakieś biblioteki ML dla PHP, które można było by wykorzystać w podobny sposób jak tutaj.

4

Jeśli ten bot wyjdzie z fazy testów do można by (a raczej należy) go połączyć z kontem @4programmers.net

tak tylko dodam, że moim zdaniem powinno być coś pomiędzy. Nie łączyłbym tego wprost z kontem @4programmers.net, ale też nie dawałbym jakiejś nazwy z czapy, tylko coś, co będzie jednoznacznie wskazywać, że ten mechanizm jest częścią forum. Może coś jak 4P_editor_bot ;)

3

screenshot-20191030223832.png

TO DZIAŁA :D :D :D

2

Bot mógłby też wykrywać czy kod nie przekracza jakiegoś limitu linii (np gdy ma więcej niż 100 linii) - mógłby wtedy prosić o przeklejenie go do pastebin.

1 użytkowników online, w tym zalogowanych: 0, gości: 1