Thoschel, ein Quizbot für den IRC


Willkommen auf der Homepage von Thoschel. Dieses Projekt hat sich zur Aufgabe gemacht, einen guten Quizbot fuer den IRC (Internet Relay Chat) zu programmieren. Im Moment ist Thoschel über irc.freenet.de im Kanal #labern.de in Aktion zu bewundern. Das Projekt wurde schon Anfang 2000 von Thomas Schürger und Michael Sauer ins Leben gerufen, da wir sehr oft im IRC waren, immer auf verschiedenen Kanälen gequizzelt haben uns der Quizbot aber nie gefallen hat. Die damaligen Bots waren zu anfällig (gerade gegen Channelsplits), meistens zu langsam und laut der Botowner auch schlecht zu konfigurieren (man benötigte meistens einen Neustart des Bots). Da wir beide ziemlich gut programmieren können haben wir dieses Projekt ins Leben gerufen, welches auch seit neuestem von Sourceforge gehostet wird (vielen Dank an dieser Stelle).

Die Geschichte von Thoschel
Der erste Quizbot (damals noch Quizbot genannt) wurde innerhalb von einer Woche geschrieben und lief danach auf #quizfun und später auf #labern.de. Eigentlich war jeder mit dem Bot soweit zufrieden, ausser uns, den Programmierern. Also bauten wir innerhalb des nächsten Jahres den Bot mit allerlei Funktionen aus, er war komplett fernwartbar geworden. Allerdings hatten wir uns an keine Programmierparadigmen gehalten, das Datenbankformat für die Fragen war einfach schlecht und am Ende hatte keiner von uns mehr Lust am Quizbot weiterzuentwickeln. Also nahm ich mir ein Wochenende Zeit und schrieb den Bot komplett neu. Diesmal aber so, dass der Code lesbar war und leicht Erweiterungen eingebaut werden konnten. Nach den ersten erfolgreichen Testläufen haben wir dann ein Sourceforge-Projekt unter dem Namen quizbot angemeldet, welches mittlerweile wieder geloescht sein sollte, da irgenein superintelligenter Heinz den Namen quizbot als Handelsmarke eingetragen hat. Nun wurde es Zeit für Thoschel (THOmas miSCHEL).

Die Vorzüge dieses Bots
Ich beginne hier einfach mal und zähle die wichtigsten Features von Thoschel auf:
  1. komplett in Perl geschrieben, damit Plattformunabhängig
  2. Autoreconnect/Autorejoin
  3. 3 verschiedene Zugriffsarten. Als erstes der normale Spieler, er kann Fragen beantworten und Fragen stellen. Dann die Operator des IRC-Kanals, sie können Fragen zum löschen markieren und den Bot intern neu initialisieren. Die Quizmaster im Endeffekt haben komplette Kontrolle über den Bot. Sie können alle Variablen, von denen das Spiel und die Ausgabe abhängt zur Laufzeit ändern.
  4. eigenes, leicht erweiterbares Datenbankformat
  5. gleichzeitiges Laden mehrerer Datenbanken
  6. einen Datenbankeditor (absolut beta)
  7. externe Verwaltung der Quizmaster (kann on-demand Nachgeladen werden). Damit kann leicht ein neuer Quizmaster eingetragen werden, ausserdem wird kein Passwort benötigt, um ein Quizmaster zu werden. Ein existierender Quizmaster trägt einen neuen einfach ein.
  8. Voting System: Spieler, welche aktiv mitspielen und schon Punkte gemacht haben dürfen eine Frage rausvoten. Wird eine Frage rausgevotet wird sofort die Lösung gezeigt und die Frage als gelöscht markiert, wird also bei einem neuen Quiz nicht mehr geladen. Der Quizmaster hat allerdings die letzte Entscheidung, ob die Frage fliegt oder nicht.
  9. Die aktuelle Frage und die Positionierung kann man mit Kommandos erfragen. Alle Bot-Kommandos fangen mit einem ! an.
  10. der Bot besitzt 4 verschiedene Modi, um Tips zu geben.
  11. Es wird ein Timestampverfahren angewendet um Tips, die aktuelle Positionierung und Frage zu zeigen. Damit kann der Traffic gering gehalten werden oder aber auch das Quiz beschleunigt werden.
  12. Stellt ein Benutzer eine Frage, so darf er (auch wenn er unter anderem Namen nochmal angemeldet ist) diese nicht beantworten.
  13. Interne Floodprotection: Der Bot fliegt mit garantiert nie, weil er zuviel rumlabert.
  14. Schlafmodus: Ist im Kanal gerade nix los, so legt sich auch der Bot schlafen und verursacht so keinen Traffic. Er wird allerdings von alleine aufwachen, sobald im Kanal wieder was los ist.
  15. Beantwortet ein Spieler eine Reihe von Fragen in Folge, so gibt dies Extrapunkte.
  16. Gibt es für eine Frage mehr als 1 Punkt, so sinkt die Anzahl der Punkte nach der Zeit.
Diese Features sind schon alle implementiert und funktionieren zuverlässig (der Bot läuft mittlerweile schon über 2 Wochen ohne Neustart).
Was kommt in Zukunft an Features
Wir haben viele Ideen, die auch noch grösstenteils realisiert werden. Die erste wird sein, dass der Bot lokalisiert wird (er in mehreren Sprachen Verfügbar sein wird). Danach sind folgende Features geplant:
  1. Fluch-Modus: Es können (gegen Punkte) Flüche gekauft werden und ein anderer Mitspieler damit verflucht werden (man denke an einen Fluch der einen Spieler zwingt jeden Vokal in einer Antwort durch einen festgelegten Vokal zu ersetzen: Druu Chunusun mut dum Kuntrubuss ;)
  2. Alltime-Highscore: Hier werden auf dieser Seite sortiert nach Kanal diejenigen Leute geehrt, welche die meisten Extrapunkte gemacht haben in einem Spiel.
  3. Nicht Überbieten Modus: Es wird hier nur nach Zahlen gefragt, jeder Spieler hat genau eine Antwort. Derjenige, der am nächsten an der gesuchten Zahl ist bekommt die Punkte aber es darf nicht Überboten werden.
  4. Frage Ketten: Eine Fragekette wird eine Sammlung von Fragen sein, deren Antworten für die nächste Frage wichtig ist. Schafft jemand eine ganze Kette so gibt dies viele Extrapunkte
Dies sind nur einige der geplanten Features, allerdings jedoch diejenigen, welche als erstes realisiert werden.