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:
- Brak umowy.
- Pełna kontrolna nad tym co wysyłamy
- Praktycznie brak limitów.
- Możliwosć zdalnej obsługi.
- Tworzenie archwium (log).
Wady EKG2
- Wiesza się.
- Nie zawsze działa stabilnie.
- Nie zawsze obłsuguje długie numery GG.
- Łamie regulamin GG.
- Głupieje jak ma kolejkę do wysłania wiadomości.
Teraz popatrzmy na ofertę GG:
Zalety APIGG:
- Dostajemy klasy do obsługi Bota.
- Nie łamiemy regulaminu GG.
- Działa stabilnie.
- Masz pewność ze zadziała :)
- Obsługuje wszystkie numery GG bez problemu.
Wady APIGG
- Umowa z dość ciekawą opłatą gdy złamiemy porozumienie.
- GG ma prawo wysyłać reklamy do userów którzy korzystają z Bota.
- Brak klasy do obłsugi archiwum – chyba że sam sobie napiszesz.
- Limity.
Także.. Twój wybór!
Enjoy :)
Mateusz Mazurek
„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ę ;)