Bot dla EKG

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!

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

3 komentarze

  1. „Na wstępie zaznaczę, że nie jestem programistą, a kod programu napisany w Pythonie może nie być do końca napisany poprawnie.”

    Do dzisiaj się to nie zmieniło. 😉

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *