1 grudnia 2011

Automatyzacja komunikatora GG, czyli bot Gadu-Gadu

Po co automatyzować swój komunikator GG?
Jest wiele sytuacji, w których może się to przydać np.:
  • automatyczna odpowiedź gdy ktoś do nas napisze, więcej, wiele odpowiedzi w zależności od osoby, pory dnia itp.
  • wysyłanie wiadomości do osób zależnie od zmiany ich opisu czy statusu 
  • prowadzenie automatycznej konwersacji, ustalenie scenariusza, dobry fun
  • logowanie powiadomień
  • wysyłanie SMS gdy ktoś się odezwie
  • inne zaawansowane zastosowania
Aby napisać bota GG trzeba przygotować środowisko.
Należy ściągnąć klienta GG EKG, a następnie skompilować z obsługą języka skryptowego Python:
./configure --with-python && make && make install
Stworzyć katalog ~/.gg/scripts/autorun/ z którego automatycznie po starcie EKG będą ruszały nasze skrypty.

Odpalamy klienta EKG poprzez wywołanie polecenia ekg.

Przystępujemy do konfiguracji swojego numer GG lub innego:
set uin 123456
set password mojetajnehaslodogg
save
Ściągamy listę kontaktów z serwera
list -g
lub dodajemy kontakty ręcznie
add numer nazwa
Każdorazowo można zapisać ustawienia poleceniem save.
Teraz przystępujemy do napisania kodu, stwórz plik skrypt.py w ~/.gg/scripts/autorun/.

Wklej taką zawartość:
#!/usr/bin/python

import ekg
import re
import logging
from time import gmtime, strftime

logger = logging.getLogger('ekg')
logger.setLevel(logging.DEBUG)
fh = logging.FileHandler('log.txt')
fh.setLevel(logging.DEBUG)
logger.addHandler(fh)

def init():
    ekg.printf("generic", "Wlaczenie")
    return 1

def deinit():
    ekg.printf("generic", "Wylaczenie")

def handle_status(uin, name, status, descr):

    if not descr:
        descr = ''

    logger.info(str(uin)+","+descr)
    ekg.printf("generic",str(uin)+","+descr)

Ten kod pozwoli na rejestrowanie zmian opisów osób z listy kontaktów i zapisze je do pliku i na ekran programu EKG.

Wystarczy zapisać plik, uruchomić ponownie ekg i na ekran powinny zacząć spływać komunikaty zmian opisów.

Kluczowa jest tutaj funkcja handle_status przyjmująca parametry, które można odczytać i operować na nich.
Jest więcej funkcji, które dają dodatkowe możliwości interakcji z protokołem GG.
Polecam zapoznać się z dokumentacją na stronie http://ekg.chmurka.net/docs/python.txt.

0 komentarze:

Prześlij komentarz