Metody i atrybuty modułu
Wywołanie polecenia ekg2
Wyświetlenie tekstu w podanym formacie.
Wyświetlenie tekstu w formacie generic
Zapisanie danych debugowych w podanym formacie (notacja printf).
Zwraca listę obiektów typu session
zawierającą dostępne sesje.
Zwraca obiekt sesyjny sesji o podanej nazwie. Podnosi wyjątek
RuntimeException
jeśli takiej sesji nie ma.
Zwraca obiekt reprezentujący bieżącą sesję.
Zwraca listę zawierająca załadowane pluginy.
Wykonuje funkcję callback
co podany czas. Funkcja ta nie może
przyjmować argumentów.
Łączy funkcję callback
z sygnałem o podanej nazwie. Funkcja
musi przyjmować argumenty takie, jakie przesyłane są z
sygnałem.
Łączy funkcję callback
z reakcją na wykonanie polecenia.
Funkcja musi przyjmować dwa argumenty: nazwę wpisanego
polecenia i argumenty mu przekazane.
Dodaje zmienną skryptową, która będzie zapisywana w pliku
konfiguracyjnym ekg2. Opcjonalny parametr
callback
może
zawierać funkcję, która będzie wykonywana przy każdej zmianie
wartości dodawanej zmiennej.
Funkcja musi przyjmować dwa argumenty: nazwę zmiennej i jej
nową wartość.
Zmienne dodane metodą variable_add można odczytywać tak, jak
wszystkie inne ustawienia konfiguracyjne, tj. za pomocą
słownika ekg.config
Zwraca obiekt window
reprezentujący bieżące okno
Zwraca obiekt window reprezentujący okno o podanej nazwie.
Funkcja rozpoznaje także nazwy __current
i
__status
.
Słownik zawierający opcję konfiguracji ekg (odczyt i zapis)
Stałe
typ wiadomości. wiadomość
typ wiadomości. rozmowa ciągła
typ wiadomości. wysłana wiadomość
typ wiadomości. wysłana wiadomość w ramach rozmowy ciągłej
typ wiadomości. wiadomość systemowa
stan. Not Available (rozłączony)
stan. Available (dostępny)
stan. Away (z dala od klawiatury)
stan. Auto Away (automatyczny stan bezczynności)
stan. Invisible (niewidoczny)
stan. Extended Away (niedostępny)
stan. Do Not Disturb (nie przeszkadzać)
stan. Free for Chat (chętny do rozmowy)
stan. Blocked (zablokowany)
stan. Unknown (nieznany)
stan. Error (błąd)
ignorowanie. zmian stanu
ignorowanie. stanów z opisem
ignorowanie. wiadomości
ignorowanie. połączeń bezpośrednich (DCC)
ignorowanie. zdarzeń
ignorowanie. powiadomień
ignorowanie. wszystkiego
watche. odczyt
watche. odczyt po lini
watche. zapis
Metody i pola obiektu klasy session
Słownikowy dostęp do konfiguracji sesji.
Łączy sesję.
Zwraca True jeśli sesja jest połączona, False wpp.
Rozłącza sesję.
Zwraca listę obiektów użytkowników na liście danej sesji.
Zwraca obiekt klasy user
o danym
identyfikatorze (gg:123
,
jid:test@example.com
itp.)
Zwraca tuple ( status, opis ), gdzie status jest jedną ze stałych określających typ stanu. W przypadku braku opisu, drugą wartością będzie None.
Ustawia status i ewentualnie opis. Status musi być jedną ze stałych opisujących stan.
Obiekt zawiera atrybutowy dostęp do informacji o obiekcie:
uid . identyfikator
nickname . ksywka
first_name . imię
last_name . nazwisko
mobile . nr telefonu
status . Zwraca krotkę zawierającą status i opis
resource . Zasób jabberowy użytkownika
last_seen . Czas ostatniej dostępności (timestamp)
groups() . metoda zwracająca listę zawierającą nazwy grup do których należy użytkownik
ip . adres ip
last_ip . poprzedni adres ip
status_time . czas ostatniej zmiany statusu (timestamp)
last_status . krotka zawierająca status i opis, kiedy osoba była ostatni raz dostępna
Metody obiektu klasy window
Przełącza widok na dane okno.
Wyświetla napis w danym oknie.
Wyświetla napis w podanym formacie
Zwraca obiekt reprezentujący następne okno. Lista okien jest "zawijana", tzn. wywołanie metody next() na ostatnim oknie zwróci obiekt pierwszego okna.
Zwraca obiekt reprezentujący poprzednie okno. Lista okien jest "zawijana", tzn. wywołanie metody prev() na pierwszym oknie zwróci obiekt ostatniego okna.
Zamyka okno. W tym momencie obiekt klasy window powinien być usunięty, gdyż nie można już go używać.
Skrypty w pythonie można "podpinać" do różnych zdarzeń. Może to być wykonanie funkcji co podany okres czasu (metoda timer_bind), poprzez wykonanie polecenia (command_bind) lub reakcja na sygnał wydany przez ekg2 (handler_bind). We wszystkich przypadkach, drugim argumentem jest funkcja (nie nazwa, lecz sama funkcja - por. przykład), która ma być wykonana. Pierwszym natomiast, odpowiednio interwał, nazwa polecenia lub nazwa sygnału. Poniżej zamieszczona jest lista zawierająca obsługiwane obecnie sygnały, oraz argumenty, które musi przyjmować funkcja obsługująca sygnał.
Sygnały
Argumenty: session, id, mclass, text, time, ignore_level
Wywoływana gdy ekg otrzymuje wiadomość.
Argumenty: session, rcpts, text
Wywoływana gdy użytkownik wysyła wiadomość. rcpts jest tekstową reprezentacją odbiorcy, dokładnie taką jak podał użytkownik (pierwszy argument /msg, /chat, /query itd).
Argumenty: session, from, type, desc
Wywoływana gdy ktoś zmienia stan. nazwy parametrów powinny być zrozumiałe. jeśli zwróci 0, zmiana stanu zostanie zignorowana. jeśli zwróci 2, zmiana stanu nie będzie ignorowana, ale nie zostanie wyświetlona. jeśli zwróci krotkę o takich samych argumentach jak funkcja, dane zostaną zmienione.
Argumenty: status, desc
Wywoływana gdy klient zmienia stan. Jeśli zwróci 0, stan nie zostanie zmieniony.
Argumenty: char
Wywoływane w momencie wciśnięcia przycisku. Argumentem jest kod wciśniętego klawisza.
Oprócz sygnałów, możliwe jest zdefiniowanie dwóch funkcji, które są rozpoznawane przez ekg2.
Wywoływana gdy skrypt jest ładowany. Jeśli ta funkcja zwróci 0, skrypt nie zostanie załadowanych.
Wywoływana gdy skrypt jest usuwany z pamięci.
# -*- encoding: iso-8859-2 -*- import ekg import time def status_handler(session, uid, status, desc): for sesja in ekg.sessions(): if sesja.connected(): ekg.echo("sesja '%s' połączona" % (name,)) ekg.echo("status: "+sesja['status']) else: ekg.echo("sesja '%s' nie jest połączona" % (name,)) ekg.echo("Dostałem status!") ekg.echo("Sesja : "+session) ekg.echo("UID : "+uid) ekg.echo("Status: "+status) if desc: ekg.echo("Opis : "+desc) sesja = ekg.session_get(session) ekg.echo('Lista userów sesji: '+", ".join(sesja.users())) user = sesja.user_get(uid) if user.last_status: ekg.echo(str(user.last_status)) stat, des = user.last_status ekg.echo("Ostatni status: "+stat) if user.last_status[1]: ekg.echo("Ostatni opis : "+des) else: ekg.echo("Nie ma poprzedniego stanu - pewnie dopiero się łączymy...") ekg.echo("IP: "+user.ip) ekg.echo("Grupy: "+", ".join(user.groups())) if status == ekg.STATUS_AWAY: ekg.echo("Chyba go nie ma...") if status == ekg.STATUS_XA: ekg.echo("Chyba bardzo go nie ma, to na grzyb mi taki status?. Połykam. *ślurp*") return 0 return 1 def message_handler(session, uid, type, text, sent_time, ignore_level): ekg.debug("[test script] some debug\n") ekg.echo("Dostałem wiadomość!") ekg.echo("Sesja : "+session) ekg.echo("UID : "+uid) if type == ekg.MSGCLASS_MESSAGE: ekg.echo("Typ : msg") elif type == ekg.MSGCLASS_CHAT: ekg.echo("Typ : chat") ekg.echo("Czas : "+time.strftime("%a, %d %b %Y %H:%M:%S %Z", time.gmtime(sent_time))) ekg.echo("Ign : "+str(ignore_level)) ekg.echo("TxtLen: "+str(len(text))) if len(text) == 13: ekg.echo("Oj, ale pechowa liczba, nie odbieram") return 0 return 1 def own_message_handler(session, target, text): ekg.debug("[test script] some debug\n") ekg.echo("Wysyłam wiadomość!") ekg.echo("Sesja : "+session) ekg.echo("Target: "+target) ekg.echo("TxtLen: "+str(len(text))) return 1 def connect_handler(session): ekg.echo("Połączono! Ale super! Można gadać!") ekg.echo("Sesja : "+session) if session[:3] == 'irc': struct = time.gmtime() if struct[3] >= 8 and struct[3] < 17: ekg.echo('Ładnie to tak ircować w pracy? ;)') sesja = ekg.session_get(session) if sesja.connected(): ekg.echo('Połączony!') else: ekg.echo('W tym miejscu jeszcze nie połączony') ekg.echo('Lista userów sesji: '+", ".join(sesja.users())) def keypress(key): ekg.echo('nacisnales #"+ str(key)); def disconnect_handler(session): ekg.echo("Ło, sesja %s nam padła" % (session,)) ekg.echo("Wysyłamy smsa że nam cuś padło...") def foo_command(name, args): ekg.echo("Wywołane polecenie foo!") def varchange(name, newval): ekg.echo("Zmienna %s zmieniła wartość na %s" % (name, newval) ) ekg.command_bind('foo', foo_command) ekg.handler_bind('protocol-message-received', message_handler) ekg.handler_bind('protocol-message-sent', own_message_handler) ekg.handler_bind('protocol-status', status_handler) ekg.handler_bind('protocol-connected', connect_handler) ekg.handler_bind('protocol-disconnected', disconnect_handler) ekg.handler_bind('ui-keypress', keypress) ekg.variable_add('zmienna_testowa', 'wartość', varchange)
Parametry. [kod]
KrĂłtki opis. uruchom dowolny kod w ekg2
Uruchom dowolny kod w jÄzyku Python w ekg2. Kod ma dostÄp moduĹu ekg. Na przykĹad sprĂłbuj wykonaÄ: /python:eval ekg.echo("2 + 2 = %%s" %% (2 + 2))
Parametry.
KrĂłtki opis. wypisz listÄ zaĹadowanych skryptĂłw
Parametry. [skrypt]
KrĂłtki opis. zaĹaduj skrypt jÄzyka Python do ekg2 i uruchom go
ZaĹaduj dowolny skrypt jÄzyka Python do ekg2 i uruchom go. `skrypt` jest nazwÄ pliku w katalogu .ekg2/scripts lub .ekg2/<profile>/scripts.
Parametry. [skrypt]
KrĂłtki opis. jednorazowo wykonaj skrypt jÄzyka Python
Jednorazowo wykonaj dowolny skrypt jÄzyka Python. ZauwaĹź, Ĺźe skrypt nie powinien rejestrowaÄ Ĺźadnych handlerĂłw - skrypt zostanie usuniÄty z ekg2 jak tylko skoĹczy siÄ wykonywaÄ. Zobacz rĂłwnieĹź /python:load. `skrypt` jest nazwÄ pliku ze ĹcieĹźkÄ wzglÄdem CWD.
Parametry. [skrypt]
KrĂłtki opis. usuĹ skrypt z ekg2
UsuĹ skrypt. To znaczy wyrejestruj wszystkie handlery i bindingi zarejestrowane przez dany skrypt i usuĹ skrypt z pamiÄci. `skrypt` jest nazwÄ skryptu, czyli nazwÄ pliku bez rozszerzenia '.py'.