Internet Technologies & News

Bot GG na przykładzie EKG

Do zrobienia własnego bota GG działającego na EKG potrzebujemy EKG z obsługa pythona (./configure –with-python) oraz znajomość choćby podstaw pythona. To będzie krótkie How To ogólnie pokazujące co i jak.

  1. Otwieramy dowolny edytor tekstowy (najlepiej aby umiał kolorować składnię pythona - może być Gedit)

  2. W pierwszych liniach powinno znaleźć się:

#!/usr/bin/python
# -*- coding: iso-8859-2 -*-

Dzięki nim będziemy mieli możliwość pisania polskich znaków w naszym pliku pythona.

  1. Następnie musimy zaimportować moduł EKG, w tym celu w następnej linii:
import ekg
  1. Potem tworzymy 2 funkcje:
def init():
   ekg.printf("generic","Zaladowano")
   return 1
 
def deinit():
   ekg.printf("generic","Usunięto")
   return 1

Dzięki nim będziemy widzieli czy nasz skrypt został załadowany/usunięty

  1. Następnie tworzymy funkcję:
def handle_msg(uin, name, msgclass, text, time, secure):

Funkcja ta jest w zasadzie najważniejszą częścią “bota”, to ona odpowiada za odbieranie i wysyłanie wiadomości.

  1. W moim How To umieściłem w tej funkcji:
   if user.count(uin)!=0:
      reply="Wiadomość nr 1"
   else:
      reply="Wiadomość nr 2"
      ekg.command("msg %s %s"%(uin,reply))

Jak widać użyte zostało sprawdzenie listy a więc pod importowanymi modułami dopiszmy:

user=[numergg1, numergg2]

Każdy nowy numer należy oddzielić przecinkiem.

  1. Plik zapisujemy w ~/.gg/scripts jako how_to.py

  2. Uruchamiamy EKG i wpisujemy python load how_to Jeśli wszystko jest dobrze powinniśmy ujżeć napis “Załadowano”

  3. Koniec.

  4. Umieszczam też cały plik:

#!/usr/bin/python
# -*- coding: iso-8859-2 -*-
import ekg
user=[855006, 9571085]
def init():
   ekg.printf("generic","Zaladowano")
   return 1
def deinit():
   ekg.printf("generic","Usunięto")
   return 1
def handle_msg(uin, name, msgclass, text, time, secure):
   if user.count(uin)!=0:
      reply="Wiadomość nr 1"
   else:
      reply="Wiadomość nr 2"
   ekg.command("msg %s %s"%(uin,reply))
   return 1

Jeśli ktoś potrzebuje jakiś szerszych informacji to proszę pisać do mnie

23 Komentarzy dla “Bot GG na przykładzie EKG”

  1. Pigmej:

    Jutro albo pojutrze napiszę krótkie How To przedstawiające ten sam problem używając Jabbera i xmpppy.

    //edit I tak zrobiłem http://pigmej.eu/index.php/2007/05/04/bot-jabbera-na-przykladzie-xmpppy/

  2. zielony:

    hej nie wiem czemu ale skrypt ten wywala mi z błędem w linii 17 :( pythona w ogóle nie kojarzę może jakaś rada ?

  3. zielony:

    ok już widzę gdzie błąd był :)

  4. Pigmej:

    Czyli gdzie było nie tak?

    Może jakieś moje niedopatrzenie podczas przenoszenia na bloga?

  5. zielony:

    nie nie to byl moj blad, python jest czuly jesli chodzi o wciecia (: Teraz walczy z tym by odpowiadal na wszystkie wiadomosci bez podawania user moze moglbys podac rozwiazanie ? :)

  6. Pigmej:

    jasne:)

    usuń: user=[855006, 9571085]

    to: if user.count(uin)!=0: reply=”Wiadomość nr 1″ else: reply=”Wiadomość nr 2″

    zastąp reply=”treść odpowiedzi” wcięcia jak na poziomie if i else

  7. zielony:

    super działa, dzięki :) a powiedz mi czy jest możliwość taka by jeśli mam rozpoczęto jakąś rozmowę z którąś osobą to nie wykonywał skryptu dla tej osoby, a w innym wypadku go robił

  8. Pigmej:

    zagadaj do mnie poza blogiem. Dać się da.

  9. Help:

    Co to jest ten pyton :(

  10. Pigmej:

    Nie pyton a python.

    Python na wikipedii

  11. Sodek:

    [..]potrzebujemy EKG z obsługa pythona[…] co to jest ?

    A edytor tekstowy - moze byc zwykly notatnik ? Wiem e jest trudno tam cos zrobic itd ale czy by mozna było ? Jesli nie to skad sciagnac ten ”Gedit” ?

    A pozatym bardzo ladnie i pieknie tlumaczysz. Prosze o pomoc, GG 6626788

  12. Pigmej:

    Jasne, że może być.

    Gedit to jest edytor tekstowy pod Linuxa.

    W notatniku możesz zapisać, ale pamiętaj aby zapisać plik jako *.py

  13. Sodek:

    Cholera ! Ale szybko odpisales widac ze strona zadbana i wogole. Okej to już będę wiedział ale co to jest to ” EKG z obsługa pythona ”. EKG to ekstremalny klient gg a python to jakiś język ale skąd to sciągnąć?? Kurcze wiesz ja jestem ciemno zielony gosc i nic nie kumam dopóty , dopóki się nei naucze :D

  14. Pigmej:

    EKG to komunikator konsolowy sieci GG pod Linuxa (i Unix)

    Python to język programowania, dostępny na różne platformy.

    A EKG z obsługą pythona to ./configure –with-python podczas kompilacji EKG.

    Pod Windowsa EKG nie ma.

    Pod Windowsem działać będzie moje inne how to http://pigmej.eu/index.php/2007/05/04/bot-jabbera-na-przykladzie-xmpppy/

    Polskie serwery Jabbera w większości obsługują również GG.

  15. Fenix:

    Bardzo fajny tutorial.

    Jeśli ktoś chciałby wysyłać wiadomości, które zawierają znaki końca linii, wystarczy zrobić to tak:

    msg=”Wiersz pierwszy \r\n Wiersz drugi \r\n Wiersz trzeci \r\n”

    no i

    ekg.command(”msg %s %s”%(uin,msg))

    Dziękuję pigmejowi za tą wskazówkę.

  16. Pigmej:

    Celem uzupełnienia:

    Windows jako znaki końca linii uważa \r\n
    Linux \n

    Dodatkowo Linux “poprawnie” rozpoznaje również \r\n

  17. drag0:

    13:49 ::: Nie znaleziono skryptu bot │ 13:49 ImportError: No module named bot │ 13:49 Error in sys.excepthook: │ 13:49 Traceback (most recent call last): │ 13:49 File “/var/lib/python-support/python2.5/apportpythonhook.py”, line 44, in apport_excepthook │ 13:49 binary = os.path.realpath(os.path.join(os.getcwdu(), sys.argv[0])) │ 13:49 AttributeError: ‘module’ object has no attribute ‘argv’ │ 13:49 │ 13:49 Original exception was: │ 13:49 ImportError: No module named bot

    Skrypt zapisalem, bot.py zeby nie bylo ;) Dlaczego tak sie dzieje? pzdr

  18. Pigmej:

    importujesz z katalogu w ktorym jest plik bot.py?

  19. rafal:

    Traceback (most recent call last): File “./test”, line 4, in ? import ekg ImportError: No module named ekg

    Co z tym zrobić dystrybucja Debian,

  20. Pigmej:

    Zainstalować pythonowy moduł ekg/ekg z obsługą pythona.

  21. rade:

    Witam! Ja potrzebuje nieco inego skryptu… takiego ktory raz dziennie wysylalby wiadomosc do pewnego bota a nastepnie otrzymana odpowiedz zapisywalby do pliku. Jesli ktos wie jak to zrobic to prosze o wskazowki. Pozdrawiam

  22. mociu:

    Bardzo pilnie potrzebuje skryptu pod EKG który wyciąga opis użytkownika i zapisuje go do pliku. Bardzo proszę o pomoc.

  23. smoq:

    Witam. Mam pytanie czy ktoś podjąłby sie napisania bota pod wykorzystującego protokół gg ? Chodziłoby mi o coś takiego: -Jakiś user który wyk. protokół gg pisze np.: -Witam a bot odpisuje mu wykazem funkcji dostępnych. A w tych funkcjach zależałoby mi na np: kontakt, www, admin, nickusera, dodajdobazydanychmojnumer, usunmojnumer, news. proszę o kontakt. e-mail spevi[at]o2.pl

Napisz komentarz

Musisz być zalogowany aby napisać komentarz.