niedziela, 26 października 2008

Bot gadu-gadu z wykorzystaniem EKG i Python'a

Opiszę jak w prosty sposób napisać własnego bot'a gg.
Wymagana jest podstawowa znajomość języka Python i środowiska Linux.

Użytkownicy [x/k]Ubuntu mogą pobrać EKG z repozytorium wpisując:
sudo apt-get install ekg
warto też zainstalowa najnowszą wersje Pythona
sudo apt-get install python
pozstali muszą skompilować ze źródeł.
A teraz do dzieła:

odpalamy ekg: #ekg

wpisujemy
set uin 'numer gg'
set password 'hasło'
save

teraz czas zacząc pisać bota:
przechodzimy do katalogu ~/.gg/
tworzymy katalog scripts (#mkdir scripts)

i tu tworzymy plik najlepiej z rozszerzeniem .py

jeśli chcemy by nasz skrypcik odpalał sie zaraz po uruchomieniu EKG w katalogu scripts tworzymy kolejny katalog: autorun i tu wrzycamy nasz plik.
stuktura programu:

# importujemy bibliotekę ekg
import ekg

#ta funkcja wywołuje się przy starcie skryptu
def init():
ekg.printf("generic","Bot loaded");
#ustawiamy opis
ekg.command("_descr \"Opis\"");
return 1

#ta funkcja wywołuje się przy zamykaniu skrypu
def deinit():
ekg.printf("genetic","Bot unloaded");
logfile.close()

#przechwytywanie zdarzeń:
def handle_msg(uin, name, msgclass, text, time, secure):

uin - numer gg od którego przyszła wiadomość
text - treść wiadomości
time - czas nadejscia

pozostałe parametry są raczej mniej istotne.

Zabawa polega na tym, aby przechwycić text i odpowiednio na niego odpowiedzieć.

Jak narazie napisałem prosty kalkulator.



Ale zamierzam napisać coś znacznie ciekawszego:)

I jeszcze wywołanie skryptu: w konsolce ekg:
python (un)load nazwa_skryptu.py

3 komentarze:

Anonimowy pisze...

twoj kalkulator sie wyklada gdy dzielimy przez zero

Log_1 pisze...

ups, ale wtopa:) dzięki

poprawiłem:

try:
> mtext = str( int(t[0]) / int(t[2]))
except ZeroDivisionError:
> mtext = "Nie dziel przez 0"

Anonimowy pisze...

skrypt bardzo fajny, ale nie da się operować na liczbach typu 15,5. Pozdrawiam.