Creative Commons Lizenzvertrag

Freitag, 23. Mai 2008

JabberBot

Hier mal ein kurzer Ansatz eines JabberBots, geschrieben in Ruby. Ruby deshalb, weil es meiner Meinung nach dafür die beste Bibliothek gibt - XMPP4R. Eine Anleitung für einen Bot gibt es bereits hier, aber ich wollte es etwas anders haben und einen Bot für MUC schreiben, der zu gegebenen Zeitpunkt einfach nur einen kurzen Text in den Raum schreibt. Die Installation von XMPP4R ist unkompliziert , ich habe es mit apt-get installiert:

apt-get install libxmpp4r-ruby

Nun zu meinem Quelltext:

#!/usr/bin/env ruby

require 'xmpp4r'
require 'net/http'
require 'cgi'
require 'iconv'
require 'xmpp4r/muc'

client = Jabber::Client.new(Jabber::JID.new('USER@JABBERSERVER/newsbot'))
client.connect
client.auth('PASSWORD')
client.send(Jabber::Presence.new.set_show(:chat).set_status('Ich bin ein Newsbot'))

muc = Jabber::MUC::SimpleMUCClient.new(client)
muc1 = Jabber::MUC::SimpleMUCClient.new(client)
muc.join(Jabber::JID.new('ROOM1@MUCSERVER1/NewsBot'))
muc1.join(Jabber::JID.new('ROOM2@MUCSERVER2/NewsBot'))

muc.say(Iconv.new('utf-8', 'iso-8859-1').iconv('Cujos Rätselstunde - www.raetselstunde.de - Denksport vom Feinsten - immer Mittwoch um 21:00'))
muc1.say(Iconv.new('utf-8', 'iso-8859-1').iconv('Cujos Rätselstunde - www.raetselstunde.de - Denksport vom Feinsten - immer Mittwoch um 21:00'))
sleep(5)

muc.say('/me is powered by www.marmel.name')
muc1.say('/me is powered by www.marmel.name')
sleep(5)

Die grün markierten Texte sind unbedingt an die eigenen Gegebenheiten anzupassen. Der Bot hat den Nicknamen NewsBot und kann natürlich ebenso wie die auszugebenden Texte an die eigenen Bedürfnisse angepasst werden. Beachte: bei der Verwendung von Sonderzeichen ist eine Konvertierung der auszugebenden Texte nach UTF-8 notwendig, ansonsten funktioniert das Script nicht! Das Beispiel gibt 2 Texte in 2 unterschiedliche MUC-Räume aus und wird jeweils für 5 Sekunden angezeigt. Erweiterungen wie z.B. Interaktion mit dem Bot usw. sind leicht realisierbar. Bei der Verwendung in der Praxis in VPI-Systemen beachtet bitte auch die Kennzeichnung als Bot. Dieses Script könnte nun per Cron-Job zyklisch gestartet werden oder auch auf jede andere Art und Weise z.B bei irgendwelchen Statusänderungen.

Kommentare ohne Google+ erstellen:

Marmel powered by Instant Communities