Wenn Sie im Internet Relay Chat (IRC) waren, sind Sie wahrscheinlich irgendwann auf einen Bot gestoßen. Bots sind unabhängige Programme oder Skripte, die sich wie ein Mensch mit einem Netzwerk verbinden. Sie können so programmiert werden, dass sie auf Benutzerbefehle reagieren oder sogar chatten. In diesem Handbuch erfahren Sie, welche Möglichkeiten Sie zum Erstellen eines IRC-Bots haben und wie Sie einen von Grund auf neu erstellen.
Schritte
Methode 1 von 2: Optionen bewerten

Schritt 1. Ziehen Sie die Installation eines Client-Skripts in Betracht
Manchmal möchten Sie nur eine einfache Aufgabe erledigen und möchten nicht, dass es ein unabhängiges Programm ist. In diesem Fall können Sie ein Skript an einen IRC-Client anhängen. Dies ist bei mIRC üblich, das über eine robuste Skript-Engine und eine Vielzahl verfügbarer Skripte verfügt. Dies ist die einfachste Option und wird dringend empfohlen, wenn Sie nicht viel oder keine Programmiererfahrung haben. Für den Rest dieses Handbuchs erfordern die Anweisungen einige Kenntnisse in der Computerprogrammierung.

Schritt 2. Ziehen Sie eine bereits vorhandene Codebasis für Ihren Bot in Betracht
Es gibt viele Open-Source- und kostenlose Programme, mit denen Sie schnell Ihren eigenen angepassten Bot einrichten können. Ein solches Beispiel ist Eggdrop, der älteste IRC-Bot, der noch gepflegt wird.

Schritt 3. Ziehen Sie in Betracht, Ihren eigenen Bot zu schreiben
Für fortgeschrittene IRC-Benutzer und Entwickler, die sich bereits mit einer Programmiersprache auskennen, ist dies eine großartige Option. Sie können so ziemlich jede beliebige Sprache verwenden, solange sie Socket-Unterstützung bietet. Zu den beliebtesten gehören jedoch Python, Lua, PHP, C und Perl. Wenn Sie keine dieser Sprachen beherrschen, aber eine andere Sprache beherrschen, ist das kein Problem. Normalerweise finden Sie Beispiele im Web in jeder gewünschten Sprache. In diesem Artikel demonstrieren wir die Verwendung von PHP. Um PHP verwenden zu können, muss PHP-CLI auf Ihrem Computer oder Server installiert sein.
- PHP kann von php.net heruntergeladen werden
- PHP-Skripte können über die Befehlszeile ausgeführt werden. Weitere Informationen und Hilfe zur Verwendung von PHP finden Sie auf dieser PHP-Handbuchseite.
Methode 2 von 2: Entwickeln Sie Ihren eigenen Bot

Schritt 1. Sammeln Sie die Verbindungsdetails
Sie benötigen die folgenden Informationen, um eine erfolgreiche Verbindung mit dem Netzwerk herzustellen.
- Server: Der Domänenname des Servers, der für die Verbindung zum IRC verwendet wird, wie z
chat.freenode.net
- Hafen: In den meisten Fällen ist dies 6667, aber wenn Sie sich nicht sicher sind, überprüfen Sie Ihren eigenen IRC-Client oder die Website des Netzwerks.
- Spitzname: Der Spitzname, den Ihr Bot verwenden soll. Beachten Sie, dass einige Sonderzeichen normalerweise nicht erlaubt sind (@#!~).
- Ident: Das Ident-Feld erscheint nach dem Spitznamen, wenn jemand ein WHOIS wie folgt ausführt:
- GECOS: Dieses Feld enthält normalerweise den echten Namen eines Benutzers oder eine allgemeine Beschreibung des Bots, aber Sie können dort alles eingeben, was Sie möchten.
- Kanal: Normalerweise möchten Sie, dass Ihr Bot in einem oder mehreren Kanälen präsent ist. In den meisten Netzwerken wird diesen ein '#' vorangestellt, es kann jedoch auch etwas anderes sein.

Schritt 2. Initialisieren Sie die Konfiguration in Ihrem Skript
Der einfachste Weg, dies zu tun, besteht darin, einige Variablen gemäß den obigen Konfigurationsnamen zu benennen. Sie könnten sie auch in einer Konfigurationsdatei speichern und auswerten, aber im Moment bleiben wir nur beim absolut Notwendigen.

Schritt 3. Verbinden Sie sich mit dem Netzwerk
Dazu müssen Sie einen Socket zum Server auf dem angegebenen Port öffnen. Sie sollten in diesem Teil auch einen Fehlerbehandlungscode hinzufügen, falls die Verbindung aus irgendeinem Grund fehlschlägt. In diesem Fall stellt uns PHP einige nette Funktionen zur Verfügung, um den Fehler effektiv zu behandeln.

Schritt 4. Registrieren Sie Ihren Bot
Dies bedeutet, dass Sie Ihren Nickname, Ihre Identität und GECOS an den Server übermitteln und sich nicht bei NickServ registrieren. Schreiben Sie dazu einfach die Befehle NICK und USER auf den Server, gefolgt von einem Wagenrücklauf und einem Zeilenumbruch. Es ist zwingend erforderlich, dass Sie es genau so machen, wie es gezeigt wird, denn so ist es in RFC1459, der Spezifikation für das IRC-Protokoll, festgelegt.
Beachten Sie, dass die mittleren beiden Parameter (in diesem Fall * und 8) angegeben werden müssen, aber vom Server ignoriert werden. Diese beiden werden nur zwischen Verbindungsservern verwendet, nicht von einem direkt verbindenden Client

Schritt 5. Rufen Sie mit einer Schleife weiterhin Daten vom Socket ab
Wenn Sie keine Schleife verwenden, würde Ihr Skript sofort beendet und der Bot wäre im Grunde nutzlos. Um in Verbindung zu bleiben, müssen Sie Daten vom Server abrufen, nach Eingaben im gewünschten Stream suchen und gegebenenfalls darauf reagieren. Hier greifen wir Daten mit socket_read() ab, um alle für uns verfügbaren Daten zu erfassen. Wenn ja, machen wir weiter, was in der Schleife ist. Es kann hilfreich sein, die Rohdaten auch an die Konsole auszugeben, damit Sie aus der Sicht des Bots sehen können, was vor sich geht.

Schritt 6. Schreiben Sie einen Ping-Handler
Das ist wichtig. Wenn Sie nicht rechtzeitig auf Pings reagieren, wird der Server Sie trennen. Kümmern wir uns zuerst darum. Pings sehen so aus, wenn sie vom Server gesendet werden:
PING: rajaniemi.freenode.net
. Der Server muss seinen Namen nicht hinter das ':' setzen, er kann liefern, was er will. Sie *müssen* genau wiederholen, was der Server gesagt hat, außer mit PONG.

Schritt 7. Treten Sie Ihren Kanälen bei
Okay, wir haben also einen Bot, der sich mit dem Netzwerk verbindet und auf Pings antwortet, aber ansonsten nichts tut. Damit andere Ihren Bot sehen und verwenden können, sollte er sich in einem Kanal befinden (sonst müssten Sie ihm sagen, dass er auf private Nachrichten antworten soll).
- Dazu prüfen wir die Serverstatuscodes 376 oder 422. 376 bedeutet, dass die MOTD (Nachricht des Tages) beendet ist. 422 bedeutet, dass keine MOTD gesendet werden musste. Dieses MOTD ist nur etwas, das der Server sendet, wenn Sie sich verbinden, aber es ist ein guter Indikator dafür, wann wir anfangen können, Kanälen beizutreten.
- Sie müssen einen JOIN-Befehl ausgeben. Auf diesen Befehl können ein oder mehrere durch Kommas getrennte Kanäle folgen.
- Beachten Sie, dass die vom Server gesendeten Daten praktischerweise durch Leerzeichen getrennt werden. Auf diese Weise können wir die Daten aufteilen und mit einem Array-Index darauf verweisen.

Schritt 8. Reagieren Sie auf Kanalnachrichten
Nun zum spaßigen Teil. Ihr Bot ist dem Kanal beigetreten, sodass Sie ihn jetzt für das verwenden können, was Sie möchten. Lassen Sie uns einen Beispielbefehl namens @moo erstellen.
- Beachten Sie den Offset, an dem Nachrichten beginnen (dies gilt sowohl für Kanäle als auch für private Nachrichten). Es ist immer an der gleichen Stelle.
- Sie können Befehle mit Leerzeichen verarbeiten, indem Sie die Datenblöcke wieder zusammenfügen ($d). Das würde den Rahmen dieses Artikels sprengen.
- Wenn das Ziel ein Kanal ist (wie #botters-test), antworten Sie darauf. Wenn es sich um eine private Nachricht handelt, ist dieses Bit der Spitzname Ihres Bots! Sie müssen dann mit dem Spitznamen des Absenders antworten, nicht mit Ihrem (sonst würden Sie mit sich selbst sprechen, und das ist einfach albern).

Schritt 9. Erweitern Sie Ihren Bot
Mit der obigen Implementierung können Sie viele neue Funktionen hinzufügen. Es gibt viele andere Befehle, die an das IRC-Netzwerk ausgegeben werden können, wie zum Beispiel das Verwalten von Operationen, das Kicken und Bannen, das Setzen des Themas und viele andere Funktionen.
Tipps
- Sie können das Ergebnis des Befehls "/me" erzeugen, indem Sie Ihre Nachrichten wie folgt voranstellen:
- PRIVMSG #channel:\001AKTION Text hier\001.
- \001 bedeutet ASCII-Zeichen 1 und wird als solches in einem PHP-String in doppelten Anführungszeichen interpretiert. Alternativ können Sie
chr(1)
außerhalb der Saite.
- Farben können in einer Nachricht erzeugt werden, indem "\003" (ASCII-Code 3) gefolgt von einer Zahl für eine Farbe vorangestellt wird. 0 = weiß, 1 = schwarz, 2 = blau, 3 = grün, 4 = rot […]. Weitere Farben finden Sie auf der mIRC-Seite.
- Holen Sie aus Höflichkeit die Zustimmung der Kanalbesitzer und IRC-Betreiber ein, bevor Sie Ihren Bot online stellen. Nicht alle Netzwerke und Kanäle haben eine Willkommenspolitik gegenüber Bots, auch nicht gut erzogene.
- Einige IRC-Daemons gehen über die Spezifikationen des Protokolls hinaus und implementieren andere Funktionen. Wenn Sie es auf ein bestimmtes Netzwerk ausrichten, können Sie diese Funktionen sicherlich nutzen, wenn Sie das Protokoll kennen. Wenn Sie jedoch möchten, dass Ihr Bot in mehreren Netzwerken bereitgestellt wird, versuchen Sie, ihn an den RFC-Werten anzupassen.