M-Bot Projekt
M-Bot ist ein von mir als Hobby verfolgtes Bot-Projekt. Ziel des Projekts ist es den Bot zu einer bestmöglichen Unterstützung für Missionsleiter, einer möglichen Informationsquelle bei RS-bezogenen Fragen und auch sehr unterhaltsam zu machen.
Genial wäre es, wenn er einmal als autonome KI weniger anspruchsvolle NPCs selbstständig spielen könnte. Bis dahin ist es noch ein weiter Weg und ich weiss auch noch nicht, ob ich ihn jemals bis zu Ende gehe.
Datenschutz:
Wie auch die meisten anderen irc-Clients hat M-Bot die Möglichkeit seine gesamte Kommunikation mitzulogen. Die Logs werden hauptsächlich zur Fehlersuche und der Erweiterung der Funktionalität verwendet. Die Logs werden nicht veröffentlicht.
Vereinfacht kann man es so sagen, dass meinem Bot zu schreiben ungefähr so ist, wie mir zu schreiben, wenn ich afk bin. Ich habe zwar die Möglichkeit es zu lesen, aber man darf sich nicht darauf verlassen, dass ich es auch tue und jemals antworte.
Funktionsumfang:
Der Funktionsumfang besteht momentan aus rein reaktiven Funktionen. Das heißt er tut nur etwas, wenn er direkt angesprochen wird. Dies mag sich in der Zukunft ändern.
Aktuell ignoriert er jeden Text, der nicht mit m-bot:: oder m-bot::: beginnt.
Auswertung von Texten:
Beim Auswerten von Texten sucht der Bot nach Paaren von sich öffnenden und schließenden geschweiften Klammern. Innerhalb der Klammer wird nach bestimmten Schlüsselwörtern gesucht, die anschließend ersetzt werden.
Beispiele:
- {(}
{
- {)}
}
- {normal}
nachfolgender Text weder fett noch farbig
- {fett}
nachfolgender Text fett
- {blau}, {grün}, {rot}, usw.
der nachfolgende Text nimmt die jeweilige Farbe an
- {zeitstempel}
24.19.2013 15:00:00
- {datum}
24.09.2013
- {uhrzeit}
15:00:00
- {wochentag}
Dienstag
- {würfel [-1;2]}
entweder -1, 0, 1 oder 2
- {würfel a b c}
entweder a, b oder c
- {lottozahlen 6 aus 49}
6 unterschiedliche Zahlen aus dem Bereich 1 bis 49
- {sender}
Nickname des Absenders, der die Anfrage gestartet hat, z.B.: MBL
- {spitzname}
Bezeichnung des Absenders, der die Anfrage gestartet hat, z.B.: Meister (*1)
- ... noch ein paar weitere
Echo-Funktion:
Die Echo-Funktion wird aktuell über m-bot::: <Text> ausgelöst. Der Bot wertet <Text> aus und schreibt das Ergebnis auf dem gleichen Weg (Query/Channel) zurück.
Die wichtigste Anwendung besteht darin die Textauswertungsfunktion des Bots zu testen.
Beispiel:
<MBL> m-bot::: abc
<M-Bot> abc
<MBL> m-bot::: Das heutige Datum lautet {datum}.
<M-Bot> Das heutige Datum lautet 23.09.2013.
Voraussetzungen: Für Query keine. Ansonsten HalfOp-Rechte in dem jeweiligen Channel.
Fernsteuerungsfunktion:
Mittels m-bot:: print <Channel> <Text> und m-bot:: act <Channel> <Handlung> kann man den Bot in einen Channel schreiben lassen. Eine mögliche Anwendung für Missionsleiter besteht darin den Bot andere Charaktere spielen zu lassen, ohne dass man sich mit mehreren IRC-Clientinstanzen herumschlagen muss. (*2) Außerdem kann der Bot für Missionsleiter, deren irc-Client keine Farben unterstützt, farbige Texte schreiben. (*3)
Beispiele:
Query an den Bot hat geschrieben:<MBL> m-bot:: print #SG-2 Hallo, einen schönen {wochentag} euch allen.
<MBL> m-bot:: act #SG-2 winkt allen
<MBL> m-bot:: act #SG-2 {rot}Dieser Text ist wichtig.
Voraussetzung: Der Bot befindet sich in <Channel> und man selbst hat Op-Rechte oder höher in dem Channel. Zum Einsatz auf Querys anstatt auf Channel sind spezielle M-Bot-Admin-Rechte nötig.Reaktion in #SG-2 hat geschrieben:<M-Bot> Hallo, einen schönen Dienstag euch allen.
M-Bot winkt allen
<M-Bot> Dieser Text ist wichtig.
Verlassen von Channels:
Mittels m-bot:: leave <Channel> kann der Bot temporär aus einem Channel hinausgebeten werden.
Voraussetzung: Der Bot befindet sich in <Channel> und man selbst hat Op-Rechte oder höher in dem Channel oder hat spezielle M-Bot-Admin-Rechte.
Info-Funktion:
Mittels m-bot:: info <Thema> kann man Informationen zu einem bestimmten Thema abfragen. Aktuell gibt es Antworten zu über 200 Begriffen, mehr als die Hälfte davon sind RS-bezogen.
Beispiel:
Voraussetzungen: Für Query keine. Ansonsten HalfOp-Rechte in dem jeweiligen Channel.<MBL> m-bot:: info Stargate-RS
<M-Bot> Stargate-RS ist ein deutsprachiges chatbasiertes Rollenspiel.
<M-Bot> Die (alte) Webseite findest http://www.stargate-rs.de/.
<M-Bot> Desweiteren kann auch ich dir mit m-bot:: info {thema} Informationen zu verschiedenen Stargate-RS-bezogenen Themen, wie Abkürzungen, Abteilungen, Gruppen, Teams, Termine, Webauftritt oder wichtige Ansprechpartner liefern.
(*1) Ist der Absender registriert und dem Bot bekannt, kann die Bezeichnung vom Nicknamen abweichen.
(*2) Derzeit noch kein Umnicken des Bots vorgesehen, was diese Anwendung etwas einschränkt.
(*3) So schon erfolgreich bei einer Mission von SG-2 getestet.
Politik zur Nennung von RS-Mitgliedern:
Wie ich Jeff vor einigen Tagen mitgeteilt habe, will ich nicht zu allen RS-Mitgliedern eigene Info-Einträge anlegen. Stattdessen will ich mich auf Personen beschränken, die als Ansprechpartner für Teams oder Abteilungen eine Rolle spielen. Damit sich da niemand benachteiligt fühlt, soll es eine klare Regel geben, die lautet, dass nur HQ-Mitglieder, Abteilungsleiter, Gruppenleiter oder Teamleiter einen Eintrag bekommen, und auch nur, wenn sie damit einverstanden sind und mir das mit einer PN mitteilen.
Ausblick:
Erkennung unterschiedlicher Kodierungen:
Derzeit erkennt der Bot nur Befehle, die Umlaute/Sonderzeichen enthalten, wenn sie in der gleichen Kodierung, wie der Bot verwendet, geschrieben sind. Dies ist im Regelfall 'UTF-8'. Im euirc selbst sind jedoch sowohl der Standard 'ISO-8859-1' als auch 'UTF-8' weit verbreitet, was bei manchen zur falschen Darstellung von Umlauten der jeweils anderen Kodierung und im Fall des Bots zur Nichterkennung von Befehlen führt, z.B.: m-bot:: info Milchstraße oder m-bot:: info Abkürzungen
In Zukunft plane ich M-Bot so zu erweitern, dass er Befehle in beiden Kodierungen erkennt. Antworten werden aber weiter nur in 'UTF-8' ausgegeben.
Info-Funktion:
Die Infos werden aus einer von mir sogenannten Info-Worlds-Datei geladen, die mehrere verschiedene Info-Welten umfassen kann. Derzeit existieren die Welten 'Stargate-RS', 'Politik' und 'Allgemeines'.
Momentan werden alle Welten global geladen. In Zukunft plane ich es lokaler zu regeln, so dass Welten channelabhängig sind und beispielsweise Informationen aus der Welt 'Stargate-RS' nur in bestimmten Channels oder in Querys mit Personen, die ebenfalls in mindestens einem dieser Channels sind, zur Verfügung stehen. Damit kriegt dann jemand, der m-bot:: info Samstag eingibt, abhängig davon, ob er in #SGC-RelaXx oder in #Baumschule ist, entweder die Namen der an Samstagen spielenden SG-Teams oder Treffpunkt und Uhrzeit der für Samstag geplanten Baumpflanzaktion. (Und jemandem, der in beiden Channels aktiv ist, sollen dementsprechend auch beide Informationen zur Verfügung stehen.)
Bestimmte Eigenschaften für bestimmte Channel:
Derzeit sind alle Funktionen für alle Channel gleich. Irgendwann möchte ich es so arangieren, dass bestimmte Funktionen, wie Info-Funktion, Fernsteuerungsfunktion, usw., für einzelne Channel von authorisierten Leuten (z.B.: Channelfoundern) einzeln eingeschalten und abgeschalten werden können.
Fragen, Anregungen, Vorschläge und Beschwerden:
Fragen, Anregungen, Vorschläge und Beschwerden können im Diskussionsthread geäußert werden oder per PN/Query direkt an mich gerichtet werden.