Open Source im professionellen Einsatz
Linux-Magazin 02/2014
© Charles Taylor, 123RF.com

© Charles Taylor, 123RF.com

IRC plus Dokumentation

Frag die Bots

Warum sollten Chaträume nur für Menschen da sein? Dominik Honnef zeigt, wie sich spezialisierte Bots in Wissensdatenbanken oder Ticketsysteme einbinden lassen und so die Arbeit erleichtern.

621

IRC, der Internet Relay Chat, existiert bereits seit 20 Jahren, kommt aber noch immer als beliebter Kommunikationskanal gleichermaßen in Open-Source-Projekten und Unternehmen zum Einsatz. Fast ebenso lange existieren Bots, die im Channel warten und auf die Kommandos der Nutzer reagieren. Der Artikel zeigt, wie die Bots sich nützlich machen, indem sie beim Verwalten von Tickets und Erstellen von Dokumentationen helfen.

Qual der Wahl

Wer einen IRC-Bot entwickeln möchte, muss nicht mehr Tcl lernen, um den Bot-Urahn Eggdrop [1] zu aktivieren: Frameworks für Bots gibt es in nahezu jeder Sprache (siehe Tabelle 1), häufig existiert sogar mehr als eines. Auch wenn sich der Artikel auf Cinch [2], ein in Ruby geschriebenes Framework unter MIT-Lizenz (Abbildung 1), konzentriert, lassen sich die hier vorgestellten Codebeispiele auf ähnliche Weise in anderen Sprachen umsetzen.

Tabelle 1

IRC-Bots (Auswahl)

Name des Bots

Programmiersprache

Lizenz

Webseite

Autumn

Ruby

Freeware

https://github.com/RISCfuture/autumn

Willie

Python

EFL

http://willie.dftba.net

PHP IRC-Bot

PHP

CC-BY-3.0

http://wildphp.com

Jsircbot

Javascript

GPLv2

http://code.google.com/p/jsircbot/

Java IRC-Bot

Java

GPLv2

http://sourceforge.net/projects/jircb/

Abbildung 1: Das Schema zeigt vereinfacht den Aufbau des Ruby-Bots Cinch.

Cinch bringt ein objektorientiertes API und ein modulares Plugin-System mit. Ein einzelner Bot kann dank vieler voneinander unabhängiger Plugins allerlei Aufgaben erfüllen. Einem IRC-Server erscheint Cinch, wie bei IRC-Bots üblich, als ein gewöhnlicher Client. Es spielt daher keine Rolle, auf welchem System der Bot läuft, ob auf demselben wie der IRC-Server oder fernab auf einer Entwicklermaschine. Fast egal ist auch, welche Serversoftware zum Einsatz kommt, wenn es sich um eine konforme Implementierung von IRC handelt.

Bot an Bord

Ausgehend von einer vorhandenen Ruby-Installation lässt sich Cinch über

gem install cinch

einspielen. Einen einfachen Bot namens »hallobot.rb« (Abbildung 2), der auf Begrüßungen der Form »!hallo« reagiert, stellt Listing 1 vor.

Listing 1

hallobot.rb

01 # -*- coding: utf-8 -*-
02 require "cinch"
03
04 class Greeter
05     include Cinch::Plugin
06
07     match /hallo$/, method: :greet
08     def greet(m)
09         m.reply "Sei gegrüßt"
10     end
11 end
12
13 bot = Cinch::Bot.new do
14     configure do |c|
15         c.nick = "UnserBot"
16         c.server = "Adresse des IRC-Servers"
17         c.channels = ["#Ein_Channel", "#Ein_anderer_Channel"]
18         c.plugins.plugins = [Greeter]
19     end
20 end
21
22 bot.start
23
Abbildung 2: Und ewig grüßt der Bot, hier in seiner einfachsten Fassung.

Ein einfaches »ruby hallobot.rb« erweckt den Bot zum Leben, woraufhin er sich mit dem IRC-Server »Adresse des IRC-Servers« verbindet und die Kanäle »#Ein_Channel« und »#Ein_anderer_Channel« betritt. Tippt ein IRC-Nutzer ein »!hallo« in einem dieser Kanäle, reagiert der Bot mit einem eher indifferenten »Sei gegrüßt« .

Der Beispielcode besteht aus zwei Teilen: Den Hauptteil bildet die Klasse »Greeter« (Zeilen 04 bis 11). Jede Klasse repräsentiert ein einzelnes Plugin, das auf einen oder mehrere vom User abgesetzte Befehle reagiert, wobei ein solches Kommando mit einem Ausrufezeichen beginnen muss. Zum Matchen der Befehle greift der Bot-Entwickler zu regulären Ausdrücken. Die bestehen aus keiner, einer oder mehreren Capture Groups, deren Werte die angegebene Methode in Form von Argumenten entgegennimmt. So stellt zum Beispiel »/(\d+)/« ein einzelnes Argument bestehend aus einer oder mehreren Ziffern dar.

Der zweite Teil (Zeilen 13 bis 20) kümmert sich um die Konfiguration des Bots. Er erhält hier einen Namen und eine Adresse, über die er sich anmelden kann. Zeile 18 erklärt zudem, welche Plugins er verwenden soll. Da sich die Konfiguration der Datei im weiteren Verlauf des Artikels nicht ändert, folgen nun noch die Plugin-Klassen selbst. Ein Entwickler erweitert das Array der Plugins dann einfach um neue Exemplare, weitere Informationen zum API liefert die Dokumentation [3].

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Entwickler-Tools

    Web-basierte Entwicklerwerkzeuge wie Bugzilla oder Github bieten ein Web-API, über das man sie mit eigenen Skripten abfragen und in bestimmten Grenzen auch fernsteuern kann.

  • Simple Defects

    Simple Defects macht für Bugs, was Git für Programmecode tut: Die Entwickler können sich eigene Kopien der Bugdatenbank ziehen, sie bearbeiten und mit anderen synchronisieren. Doch leider dümpelt die vielversprechende Software im Betastadium vor sich hin.

  • Guter Teamgeist

    Größere Softwareprojekte bedeuten Teamarbeit - doch die will koordiniert sein. Trac, ein Python-basiertes Framework, vereinigt alle nötigen Komponenten unter einer gemeinsamen Weboberfläche.

  • Gitblit 1.4.0 bringt Tickets und Pull-Requests

    Gitblit, eine reine Java-Webanwendung für die Arbeit mit Git-Repositories, ist in Version 1.4.0 mit neuen Features erhältlich.

  • Perl-Snapshot

    Der Projekthoster Github beherbergt nicht nur die Code-Repositories vieler bekannter Open-Source-Projekte, sondern bietet auch ein durchdachtes API an, mit dem sich in ihnen herrlich herumschnüffeln lässt.

comments powered by Disqus

Ausgabe 06/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.