Forum RPG Center

Nasza twórczość => Nasza twórczość => Wątek zaczęty przez: C w Styczeń 27, 2015, 19:27:16 pm

Tytuł: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: C w Styczeń 27, 2015, 19:27:16 pm
Link do repozytorium na GitHubie: https://github.com/Vanishing-Point/smfpacks-shoutbox-bot

Dobra, chłopaki... Napisałem bota, który obecnie za przyzwoleniem miłościwie nam panujących grasuje sobie na SB i pasie się na polach czatowych wiadomości. Zostawiajcie tutaj sugestie dotyczące bota, komentarze, etc.

W spoilerze oryginalna treść wiadomości, zanim przerobiłem ją na OP:
(click to show/hide)
Tytuł: MODS = FAGS
Wiadomość wysłana przez: C w Luty 07, 2015, 12:50:16 pm
Jak w temacie. Dyskutujcie.
Tytuł: Odp: Botowe Bólpupienie!
Wiadomość wysłana przez: dziki w Luty 07, 2015, 22:12:12 pm
(https://2ch.hk/abu/thumb/36036/14194647661230s.jpg)
Aj waj, krnąbrne goje geszefty robią, boty stawiają bez informowania administracji, a potem dziwią się, że bany lecą.
Tytuł: Spurdonacht
Wiadomość wysłana przez: C w Luty 07, 2015, 22:38:13 pm
Dziki confirmed jako Żyd.
Tytuł: Odp: Botowe Bólpupienie!
Wiadomość wysłana przez: dziki w Luty 07, 2015, 22:51:22 pm
Nie jest tak, że te dwa konta cokolwiek robiły poza pisaniem na SB.

Punkt pierwszy sekcji "Profile użytkowników". (http://forum.rpg-center.pl/index.php?action=rules)
Cytuj
Wydawałoby się, że na SB jasno stawiałem sprawę, że Malebolge i Spurdobot należą do mnie.
Ludzie różne rzeczy piszą na SB. Nigdy się nie zwróciłeś się bezpośrednio do mnie(ani do Senta AFAIK) z pytaniem czy możesz coś takiego zrobić.
Cytuj
Spróbuję jeszcze raz. Nazwę bota "Malbolge" i dam mu w tytule opis, że należy do mnie, a ty nie będziesz go banował, jeśli nie zacznie odwalać dzikich inb, okej?
Najpierw tutaj albo na PW wytłumaczysz mi dokładnie jaką funkcję ma pełnić ten bot, potem się zastanowię.
Tytuł: sage
Wiadomość wysłana przez: C w Luty 07, 2015, 22:55:45 pm
sage goes in all fields (sage)
Tytuł: Odp: Botowe Bólpupienie!
Wiadomość wysłana przez: C w Luty 07, 2015, 23:06:54 pm
UPDAET: forumowy czatbot ver. 0.0.1! (http://pastebin.com/UG7A33AE) Teraz z opcją odczytywania tytułów filmików z jutubowych linków. Koszmarny chaos i strasznie dennie napisany, ale działa!

W planach wywalenie wszystkich tych regexów (funkcja logCleanup) do osobnego modułu z modelem danych i ładne odczytywanie osobno nazwy użytkownika, godziny i treści wiadomości, co umożliwi w przyszłości np. wydawanie poleceń botowi. Muszę poprawić też trwałość (po co odczytywać przy każdej aktualizacji dzień z pliku, zamiast załadować raz do programu?).
Tytuł: Odp: Botowe Bólpupienie!
Wiadomość wysłana przez: MuadDib w Luty 09, 2015, 17:18:20 pm
Zbanuj C - zbanujesz boty ;d
Tytuł: 'Murican Happy End
Wiadomość wysłana przez: C w Luty 11, 2015, 16:16:17 pm
A to, co było, jest nieistotne dla tych, którzy nadal żyją.

EDIT: Dziki Wildstein napisał mi w PMie, że Malbolge może zostać. Spurdobot nie umierał na próżno ;_;

(http://i.imgur.com/kfeWwul.png)
Tytuł: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: C w Luty 11, 2015, 18:26:01 pm
ǓPPDǺT: nowa struktura danych dla wiadomości, teraz w osobnym module (http://i.imgur.com/PifLSy7.png). Jak widzicie, nowy sposób jest o wiele bardziej elegancki, bo zamiast bawić się w rozbieranie tagów, wyciąga z nich odpowiednie dane i grupuje je na autora, czas i treść.

Kod wersji 0.1.0 (http://pastebin.com/7X2b5ffs). Wyszukiwarka linków została prawie całkowicie przepisana i wygląda teraz niesamowicie seksownie w osobnej klasie. Stąd o krok do implementacji innych interesujących komend dla bota, ale w tej chwili nie mam żadnych pomysłów. Zastanowimy się nad nimi później.

EDIT @ 17-02-2015: Wersja 0.1.1 (http://pastebin.com/y6HTbyHi). Poprawiona czytelność i przejrzystość kodu, dodane prototypowe wsparcie dla tworzenia logów via Pastebin na żądanie.
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: GuRt w Luty 23, 2015, 10:13:06 am
Funkcje rozrywkowe dla bota maybe?

Branie linka (YT albo inny soundcloud czy bandcamp) przy którym było polecenie !motyw -> motyw dnia/nocy knajpy

Bez cooldowna, tylko resetowane o dwóch porach (umownie kiedy zaczyna się dzień/noc). Użycie polecenia w przypadku, kiedy motyw na dane pół dnia jest jeszcze nieustalony, powoduje przyjęcie motywu przez bota, jeśli motyw już jest wybrany, to bot informuje o tym (zapodając link przy okazji).

Nie wiem, czy lepsze byłoby zrobienie dwóch poleceń - jednego do przesyłania motywu, drugiego do zapytania bota o kawałek, który dzisiaj leci z szafy grającej - czy jednego, z funkcjonalnością zależną od tego, czy motyw jest wsadzony, czy nie.

Jak dwa polecenia, to może !theme i !jukebox?
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: C w Marzec 01, 2015, 13:17:11 pm
Dzięki za propozycję! Zastanawiałem się nad opcją ustawienia motywu czatu. Nie wydaje się bardzo praktyczna, ale raczej nie powinna wadzić. Zająłbym się implementacją, ale ostatnio zmagałem się z innymi problemami, jak wsparcie dla wielowątkowości (pythonowy moduł threading), niewywalanie się w przypadku błędów i lepsze kodowanie, z czego ostatnie zagadnienie jest niesamowitym zabójcą czasu nieprzynoszącym oczekiwanych rezultatów.

W każdym razie, bota można używać do wypisywania dowolnego tekstu, ale większość znaków zostanie zakodowana jako chyba \u003F, czyli znak zapytania, więc opcja nie jest jeszcze zbyt użyteczna.
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: C w Kwiecień 13, 2015, 00:33:09 am
W sumie olewam pomysł na motyw knajpiany, to była przelotna moda, ale jako MotD czatu coś takiego mogłoby funkcjonować. Należy sobie tylko zadać pytanie, w którym momencie lepiej będzie zacząć pracę nad samym czatem, zamiast tworzyć zewnętrzne pythonowe skrypty do niego.

A tutaj prosty skrypt do rzucania kośćmi, który napisałem dwa-trzy dni temu, zachęcony przez Łowcę Poszukiwaczy. Niezbyt urodziwy, ale powstał w około godzinę i działa wystarczająco dobrze, jak na zapotrzebowanie na SB (obecnie znikome).

http://pastebin.com/TqBd3m5M
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: Arim w Maj 17, 2015, 09:56:38 am
Do czego potrzebny jest ten bot, jeżeli wywaliłeś loga?
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: GuRt w Maj 17, 2015, 10:56:27 am
Do marudzenia na niego.
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: Arim w Maj 17, 2015, 21:25:31 pm
Cytuj
Do marudzenia na niego.

Dzięki za odpowiedź, ale nie pytałem ciebie :)
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: C w Maj 17, 2015, 22:53:30 pm
D-do... marudzenia na niego?

Nie jestem pewien, czy rozumiem implikacje twojego pytania. Malbolge jest botem, na którego RPG Center zasługuje, ale nie takim, którego obecnie potrzebuje. Mógłbyś rozwinąć myśl?
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: Arim w Maj 19, 2015, 13:15:49 pm
Cytuj
Mógłbyś rozwinąć myśl?

Dobrze ujmę to najprościej jak się da. Skoro zero z niego pożytku dla społeczności to może warto go wypierdolić?
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: Nederland w Maj 19, 2015, 13:28:26 pm
Też się zastanawiam, po co on komu. Chyba że przytaczanie tytułów wrzucanych na shoutbox filmów z Youtube to aż taki niezbędny bajer.
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: GuRt w Maj 19, 2015, 14:14:22 pm
Skoro zero z niego pożytku dla społeczności to może warto go wypierdolić?
Oj, trzymasz obosieczny miecz.

Bot nadal ma funkcję logowania rozmów, tylko nie wypluwa archiwum na życzenie. Jest ono tak czy inaczej dostępne w razie czego, a łatwiej (i skuteczniej) zawracać o to gitarę C, niż adminom. Dodatkowa korzyść to forma pliku tekstowego, wstępnie sformatowanego i gotowego do wrzucenia na hosting.

Dodatkowo wyświetla tytuł filmu wrzuconego w linku do YT i pozwala na rzuty kością. Nie wiem, czy przekaz będzie wystarczająco jasny, jeśli napiszę, że to wszystko dla zabawy. Zastanawiam się, w jaki sposób jego obecność może komuś przeszkadzać.
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: Arim w Maj 19, 2015, 14:24:20 pm
Cytuj
Cytuj
Cytat: Arim w Dzisiaj o 13:15:49

    Skoro zero z niego pożytku dla społeczności to może warto go wypierdolić?

Oj, trzymasz obosieczny miecz.

Nie boj się świetnie sobie zdawałem sprawę z różnych implikacji tego stwierdzenia gdy je pisałem i były one, ze tak powiem zamierzone  ;)

Cytuj
Nie wiem, czy przekaz będzie wystarczająco jasny, jeśli napiszę, że to wszystko dla zabawy. Zastanawiam się, w jaki sposób jego obecność może komuś przeszkadzać.

Że C ma świetną zabawę to wiemy, ale cała reszta już nie, a co więcej średnio podoba mi się, ze SB powoli przekształca się w prywatny folwark naszego kumpla. Dopóki bot miał jakiekolwiek korzyści dla ogółu niech by sobie był, ale w momencie gdy stal sie bezużyteczny, a służący tylko i wyłącznie rozrywce pana C powinien zostać usunięty. Takie jest moje zdanie, a najlepiej jakby sie w tej kwestii wypowiedział ktoś z administracji.
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: C w Maj 19, 2015, 15:59:55 pm
Dobrze ujmę to najprościej jak się da. Skoro zero z niego pożytku dla społeczności to może warto go wypierdolić?
Nope.
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: shrike w Maj 19, 2015, 16:05:18 pm
Arim, to już jest czepianie się totalnie na siłę, co Ci on przeszkadza? To, że C ma z tego jakąś rozrywkę też Cie boli? Niczym Ci nie zamula, nie blokuje tego SB, nie robi absolutnie nic co mogłoby w jakikolwiek sposób przeszkadzać. Nie ma o co sie przyczepić, to przyczepmy się o bota, który nie robi nic złego, a daje komuś jakąś satysfakcję. Bo tak, dla zasady.
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: C w Maj 19, 2015, 16:14:23 pm
Update: informacje na temat tytułu i czasu trwania filmików na YT są od teraz podawane tylko na wyraźne życzenie zamieszczającego, wyrażane poleceniem !i lub !identify w dowolnym miejscu wiadomości.
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: dziki w Maj 19, 2015, 17:12:23 pm
Wyluzuj Arim. Bot nikomu nie szkodzi, a może ktoś lubi zobaczyć tytuł filmiku przed obejrzeniem go, bo np. w robocie siedzi.
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: Arim w Maj 19, 2015, 17:38:10 pm
Cytuj
Wyluzuj Arim. Bot nikomu nie szkodzi, a może ktoś lubi zobaczyć tytuł filmiku przed obejrzeniem go, bo np. w robocie siedzi.

Jak tam chcecie, dla mnie jest bez sensu, ale nie będę stawał przeciwko większości.
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: C w Maj 26, 2015, 03:29:09 am
Uppdatering: jeśli forumowicz sobie tego zażyczy, może wpisać !auto-identify on (i odpowiednio !auto-identify off, jeśli mu się odwidzi), by bot automatycznie identyfikował zamieszczane przez niego filmiki.
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: C w Maj 28, 2015, 18:44:39 pm
Alright, so, pora na aktualizację:


To na razie wszystko... pracuję nad drobnymi optymalizacjami kodu, ale to nic ciekawego, choć może w przyszłości pozwoli na stworzenie czegoś fajnego. Dziękuję za uwagę.
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: C w Kwiecień 10, 2016, 19:45:45 pm
Bot 0.2.0 (http://pastebin.com/vuQ1gf3b), dostępny w najbliższej knajpie. A raczej niedostępny, bo na razie tylko sobie biernie patrzy, nie zdradzając swojej obecności. Przepisałem go od zera. Patrzcie, jaki jest mały! Osiągnąłem to dzięki temu, że całe przetwarzanie listy wiadomości zostało oddelegowane do models.py. A zerknijcie na to, w jaki elegancki sposób funkcja Message.process() wyciąga wszystkie dane z shouta! Porównajcie sobie z którąś z poprzednich inkarnacji (http://i.imgur.com/PifLSy7.png), polegających głównie na wyrażeniach regularnych. Tym razem zwerbowałem do pomocy czyjś analizator HTML, BeautifulSoup.

Dużym przełomem jest sprawdzenie w Firebugu żądań wysyłanych przez shoutbox do serwera i odkrycie, że wyrzucenie ";restart" z "http://forum.rpg-center.pl/index.php?action=shoutbox;sa=get;xml;row=dowolnaliczba" sprawia, że przesyłane są jedynie nowe shouty w danej sesji, a więc wszystkie ostatnie 100 za pierwszym razem (bo wszystkie są nowe), a potem tylko te, które nie zostały jeszcze wysłane.

To oznacza parę rzeczy: po pierwsze, sprawdzanie nowych wiadomości jest mocno ułatwione, bo większość roboty jest wykonywana przez serwer. Po drugie, nie muszę już za każdym razem pobierać stu kilobajtów wiadomości. Większość odpowiedzi z serwera, biorąc pod uwagę fatalny poziom aktywności w Knajpie, będzie zajmowała 0 kilobajtów. Złożoność czasowa w najlepszym wypadku (ale najgorszym dla bywalców, tj. brak nowych wiadomości) jest teraz bardzo dobra: bot otrzyma pustą odpowiedź, Message.getMessageList() wyciągnie atrybut text odpowiedzi, wykona jedno sprawdzenie, zwróci pustą listę i to wszystko. O(5).

Jeśli chodzi o funkcję wait(), to pomyślałem, by zaimplementować system z 8chana/Vichuja, tzn. odświeżać co 5 sekund i stopniowo podwajać ten czas aż do 300 sekund w przypadku braku postów, ale biorąc pod uwagę bardzo wydajny sposób pobierania nowych shoutów (odkryty przeze mnie dopiero wczoraj), mogę wyrzucić ten zbajerowany system, zmienną self.time, i dać botowi sprawdzać nowe wiadomości co 3 sekundy, jak zwykły klient shoutboksa. Czuję dobrze optymalizacja.

Innych funkcji bot nadal nie posiada, albowiem im też chciałbym się przyjrzeć i w miarę możliwości usprawnić.

Może niedługo wsadzę kod na GitHuba. Tylko trochę się cykam, bo nigdy tego wcześniej nie robiłem.
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: C w Maj 05, 2016, 21:13:44 pm
Poprzednia pasta (http://pastebin.com/vuQ1gf3b) została zaktualizowana. Dodałem wsparcie dla gromadzenia informacji o shoutach w lokalnym słowniku (nazywanym przeze mnie "bazą danych") zapisywanym na dysku w formacie JSON pod koniec działania programu. Zgodnie z założeniami z poprzedniego posta, metody bota uległy dalszej minimalizacji (wywalenie przesadnie skomplikowanej funkcji odpowiadającej za czekanie między odświeżeniem listy shoutów).

Podoba mi się to, że w obecnej formie cała ta baza danych jest kompletnie opcjonalna. Wystarczy zmodyfikować jedną linijkę w main.py i dwie wyrzucić, by bot po prostu wyświetlał nowe wiadomości w wierszu poleceń, czyli w sumie nie robił zupełnie nic użytecznego.

Myślę, że poza rozszerzeniem funkcjonalności bazy danych o jakieś statystyki typu całkowitej liczby wykonanych cykli, w następnej kolejności zrekonstruuję znane z poprzedniej inkarnacji odczytywanie linków do YT i wyświetlanie wiadomości o zamieszczanych filmikach.
Tytuł: Odp: Malbolge - bot shoutboksowy
Wiadomość wysłana przez: C w Maj 06, 2016, 22:32:53 pm
Ogarnąłem podstawy GitHuba, bardzo proste. Od teraz kod przebywa tutaj (https://github.com/Vanishing-Point/smfpacks-shoutbox-bot).