Siema :)
Ostatnio myślałem nad tym jak działają boty gg.. Mam stronkę która w sumie już dość dobrze funkcjonuje i fajnym dodatkiem było by udostępnić taki numer GG żeby jakiś tam user mógł sobie w przystępny sposób korzystać z zasobów owego serwisu.
No to zacząłem czytać… Aby postawić BotaGG potrzebujemy hosting który stoi na jakimś linuxie, dostęp do SSH i zainstalowany program ekg2 z obsługą Pythona.. W sumie większość płatnych hostingów bez problemu udostępni takie dodatki :)
No to zaczynamy, pobierz sobie program PuTTy – przez niego będziesz się łączył z serwerem – uruchom go, wpisz serwer, port i połącz się… Wpisujesz następnie swój login, zatwierdzasz enterem i hasło i znów enter.
Teraz tworzysz terminal „drugi” w którym uruchomiony będzie ekg2 a robisz to wpisując:
1 | screen ekg2 |
i enter :)
W ten prosty sposób mamy działający w „tle” ekg2.
Teraz dodajemy swój numer GG:
1 2 3 | session -a session password save |
sa to komendy które trzeba wbić aby móc się połączyć ;)
Następnie wpisujemy
1 | connect |
i jeśli wszystko ok, to połączymy się z serwerem GG.
Teraz warto dołączyć plugin Python takim poleceniem:
1 | plugin +python |
W tym momencie mamy w pełni działający komunikator GG ;) Możemy dodać do niego motywy gaficzne, ale nie będziemy się tym teraz zajmować.
Wypróbujmy!
Wpisz sobie coś takiego:
1 | msg gg:tutaj_numer_gg_kolegi emanko! |
Po wysłaniu takiego polecenia właściciel numeru który podałeś w miejsce „tutaj_numer_gg_kolegi” dostanie wiadomość o treści „emanko!” :)
Ok, ale zrobić z tego Bota? Tutaj przyda nam się plugin python, który dołączyliśmy wcześniej..
No i tu teraz mogą być rozbierzności co do folderu gdzie plik bota będzie znajdował.. U mnie jest to home/login/.ekg2/scripts
Prawdopodobnie będziesz miał taką ścieżkę ew. podobną.
Teraz w folderze scripts tworzymy plik bot.py
Teraz warto wejść przez ftp i zacząć go edytować poprzez jakiś windowsowy edytor, no chyba że lubisz linuxowe edytory.. Jeśli tak to uzyj vi albo nano. Ja używałem przez ftp Notepad++ ;)
Także otwieramy plik.
Tutaj zaczyna się właściwe pisanie Bota, będziemy tworzyć go w języku Python.. W sumie jest dość fajny, tylko zakres funkcji oznaczany jest przez głębokość wcięć.. Mi to średnio odpowiada, ale na pewno ma jedną zaletę – kod programu wygląda schludnie. Ale cóż, nie zawsze przychodzi nam pracować w tym co lubimy najbardziej – choć jest możliwość napisania tego w PHP to czasem warto znać wiecej niż jeden język, a nauczyłem się mocnych podstaw tego języka właśnie pisząc tego Bota.
Tak czy siak – otwierasz plik i wklejasz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | # -*- coding: utf-8 -*- import ekg import urllib2 import os def init(): ekg.printf("generic","Bot loaded - success"); ekg.command("gg:back Hip-Hop.. 'To jest 'tańcz i klaszcz' a nie 'gwałć i pal'! '\n____\nZapraszamy na http://rap-cytaty.com !"); return 1 def deinit(): ekg.printf("genetic","Bot unloaded"); def handle_msg(session, uid, type, text, sent_time, ignore_level): check=0; if text.lower() in ("czesc", "cze", "hej" ): ekg.command("gg:msg "+uid +" Czesc, jestem botem ") check=1; return 1 if text.lower() in ("elo" ): ekg.command("gg:msg "+uid +" Elo ziomuś. Po tej stronie Bot ") check=1; return 1 if text.lower() == "kontakt": ekg.command("gg:msg "+uid +" Aby skontaktowac sie z Administratorem serwisu prosze napisac na kajzur@o2.pl \n\n Pozdrawiam, \n Administrator.") check=1; return 1 if text.lower() in ("spierdalaj", "wypierdalaj"): ekg.command("gg:msg "+uid +" Ja tu zostaje. Ciebie nikt nie trzyma.") check=1; return 1 if text.lower() in ("kurwa", "dziwka", "szmata"): ekg.command("gg:msg "+uid +" Zadna praca nie hanbi ;d") check=1; return 1 #smiechy teraz if text.lower() in ("huj"): ekg.command("gg:msg "+uid +" Chyba 'chuj' analfabeto! ") check=1; return 1 if text.lower() in ("chuj", "pierdol sie", "frajer", "szmaciarz", "tepak" ): ekg.command("gg:msg "+uid +" No chyba nie.. ogarnij ziom, kultura musi byc! ") check=1; return 1 if text.lower() in ("kocham cie", "kocham cię"): ekg.command("gg:msg "+uid +" Ooo, kochasz? Nie wiem co powiedzieć.. Chyba czuje to samo!") check=1; return 1 if text.lower() in ("lubie cie", "lubie cię"): ekg.command("gg:msg "+uid +" Miło mi to słyszeć, odwzajemniam.. ") check=1; return 1 if text.lower() == "sex": ekg.command("gg:msg "+uid +" Pezet - Niegrzeczna, pobawisz se ze mna troche? Ja z Toba zawsze!") check=1; return 1 if text.lower() in ("kretyn", "debil", "kutas"): ekg.command("gg:msg "+uid +" Z Ciebie ;p Wyluzuj i wbij se na http://rap-cytaty.com") check=1; return 1 if check!=1: ekg.command("gg:msg "+uid +" Nieprawidlowa komenda. Wpisz 'komendy' lub 'pomoc' aby uzyskac pomoc.") check=1; return 1 ekg.handler_bind('protocol-message-received', handle_msg) |
Jak to działa?
Tłumacze na przykładzie:
1 2 3 4 5 6 7 8 | #text - zmienna przechowuje to co do nas ktos napisał, zamieniamy ją na małe litery, wtedy nie musimy sprawdzać dwóch wartości np Elo i elo, a tylko jedną. Instrukcja if sprawdza czy, w tym przypadku, tekst który wpisał user to "elo" if text.lower() in ("elo" ): #jesli tak (spójrz na wcięcia) to wykonujemy funkcję ekg.command.. Która.. Uruchamia dokładnie to co wpisywałeś wysyłająć testową wiadomość do kogoś z klawiaturki w terminalu, czyli: ekg.command("gg:msg "+uid +" Elo ziomuś. Po tej stronie Bot ") #wyslalismy wiadomosc, fajnym pomysłem bedzie oznaczenie tego faktu, czyli ustawiamy sobie wartosc zmiennej check na 1 check=1; #i konczymy returnem return 1 |
Co tu jeszcze ciekawego napisać.. A obsługa tej zmiennej check:
1 2 3 4 | if check!=1: ekg.command("gg:msg "+uid +" Nieprawidlowa komenda. Wpisz 'komendy' lub 'pomoc' aby uzyskac pomoc.") check=1; return 1 |
Po prostu jesli skrypt nie wykona sie, tzn zaden z ifów nie umieści w zmiennej check wartosci 1, czyli to co napisał user nie było przez nas zaprogramowane, to wyswietlamy ze nie ma takiej komendy :)
I w sumie to koniec..
Teraz wracamy do naszego terminala i wpisujemy
1 | python load bot |
I powinnismy dostac komunikat ze bot zaladowany :) Ew błedy w parsowaniu pliku, co może przy kopiowaniu się zdarzyć – uważajcie na wcięcia.
Dobra.. Teraz inna sprawa
Bot na ekg2 – działa.. Ale nie zawsze jest on stabilny, a ponad to łamie regulamin GG.. Niedawno GG udostępniło API które pozwala napisać bota w PHP – bardzo ładne, przejrzyście napisane API z sensowną dokumentacją i przykładami na stronie..
Zalety EKG2:
Wady EKG2
Teraz popatrzmy na ofertę GG:
Zalety APIGG:
Wady APIGG
Także.. Twój wybór!
Enjoy :)
Oj daaawnoo mnie tu nie było. Ale wakacje to był czas dużej liczby intensywnych wyjazdów i tak naprawdę, dopiero jakoś… Read More
Cześć! Zapraszam na krótkie podsumowanie kwietnia. Wyjazd do Niemiec A dokładniej pod granicę z Francją. Chrześnica miała pierwszą komunię. Po… Read More
Ostatnio tygodnie były tak bardzo wypełnione, że nie udało mi się napisać nawet krótkiego podsumowanie. Więc dziś zbiorczo podsumuję luty… Read More
Zapraszam na krótkie podsumowanie miesiąca. Książki W styczniu przeczytałem "Homo Deus: Historia jutra". Książka łudząco podoba do wcześniejszej książki tego… Read More
Cześć! Zapraszam na podsumowanie roku 2023. Książki Zacznijmy od książek. W tym roku cel 35 książek nie został osiągnięty. Niemniej… Read More
Zapraszam na krótkie podsumowanie miesiąca. Książki W grudniu skończyłem czytać Mein Kampf. Nudna książka. Ciekawsze fragmenty można by było streścić… Read More
Pokaż komentarze
"W tym momencie mamy w pełni działający komunikator GG Tylko że brak oprawy graficznej – co możemy zmienić, ale nie będziemy się tym zajmować teraz..."
Ekg w oprawie graficznej ?! Pierwszy raz słyszę, aczkolwiek komunikator jest pod konsolę więc jak tam wsadzisz oprawę graficzną.POWIEDZ MI!
Spokojnie :) Źle to ująłem w słowa. Komunikator ten może używać tak zwanych tematów graficznych opisanych w dokumentacji, którą możesz znaleźć na stronie http://ekg2.org/ekg2book/develbook-themes.html
Wpis poprawiony, dzięki za uwagę ;)