Od jakiegoś czasu na swoje potrzeby mam skonfigurowany w domu serwer działający na Debianie Lenny. Jednym z działających na serwerze programów jest EKG.
Czym jest EKG?
EKG czyli Eksperymentalny Klient Gadu-Gadu jest otwartym klientem dla systemów uniksowych działający w terminalu, a co za tym idzie można mieć do niego dostęp przez ssh.
Program znajduje się w repozytoriach większości dystrybucji więc jego instalacja nie powinna powodować problemów mniej zaawansowanym użytkownikom.
Dla Debiana i Ubuntu będzie to polecenie:
apt-get install ekg
(oczywiście jako root lub przez dodanie na początku sudo).
Po instalacji konfigurujemy komunikator (bardzo dobry opis konfiguracji jest tutaj).
Teraz możemy przystąpić do stworzenia bota.
[ad]
Na wstępie zaznaczę, że nie jestem programistą, a kod programu napisany w Pythonie może nie być do końca napisany poprawnie. Kod jest zbieraniną różnych opisów tworzenia bota znalezionych przeze mnie w internecie i zmodyfikowany na tyle aby działał i robił to czego ja oczekuję.
Na początek (jeśli nie posiadamy takiego folderu) tworzymy folder 'scripts’ w folderze konfiguracji ekg ’.gg’.
mkdir ~/.gg/scripts
Następnie w nowo utworzonym folderze tworzymy plik bot.py
touch ~/.gg/scripts/bot.py
i edytujemy go swoim ulubionym edytorem (np. vim lub nano)
nano ~/.gg/scripts/bot.py
Na początek musimy dodać ważne nagłówki dla interpretera Pythona, aby wiedział z czym będzie miał do czynienia i załadować odpowiednie moduły.
#!/usr/bin/python
# -*- coding: ISO-8859-2 -*-import ekg
import os
import urllib
import re
Teraz poniżej dopisujemy dwie funkcje, dzięki którym będziemy wiedzieli czy bot jest załadowany w EKG.
def init():
ekg.printf("generic","Bot czuwa...")
return 1
def deinit():
ekg.printf("generic","Bot zdechł...")
return 1
Uwaga! Ważne są tabulacje!
[ad#ciemny-banner-1]
Oraz dodajemy funkcję odpowiedzialną za wysyłanie i odbieranie wiadomości przez bota.
def handle_msg(uin, name, msgclass, text, time, secure):
Teraz możemy już dodawać instrukcje, które ma wykonywać nasz bot. W poniższym przykładzie gdy pisząca do nas osoba napisze
!czas
zostanie jej wyświetlona data i godzina serwera w dokładnie takiej samej postaci jakbyśmy sami wpisali polecenie
date
w terminalu.
if text=="!czas":
czas = os.popen("%s" % "date").read()
ekg.command("msg %d %s" % (uin, czas))
return 1
Zapisujemy plik i następnie ładujemy naszego bota w EKG przez polecenie
/python load bot
Od teraz ktokolwiek do nas napisze !czas zostanie wykonana instrukcja programu i zostanie wyświetlony wynik polecenia date.
Gdybyśmy chcieli wyłączyć bota wykonujemy to poleceniem
/python unload bot
Mojego bota można przetestować na moim gg 7841700 gg: 7191939 (ostatnio nie zawsze włączony). Na początek polecam wpisać polecenie
!help
aby poznać dostępne polecenia.
Plik z moim botem: bot
Dodaj komentarz