iRC-Bot Fragen

  • Hiho,

    ich würde gerne einen kleinen iRC-Bot bauen, habe dazu folgenden Bot/Code zZ in Verwendung -> https://autoit.de/index.php?page…56814#post56814

    Das Teil läuft auch, was die bereits enthaltenen Funktionen betrifft, sehr gut. ich würde das Teil aber gerne um einige Sache erweitern.
    Ich habe beim Compilieren eingestellt, das CUI verwendet werden soll. Somit kann ich alle Consolen-Ausgaben auch schön in einem CMD-Fenster verfolgen.
    Ist es möglich, über dieses Fenster auch Eingaben zu machen?

    Also bsp. "/say Hallo" und er dann quasi im Chan wo er ist, der Bot "Hallo" sagt?

    Ansonsten könnte man dies auch über einen DCC-Chat machen (wobei ich die DCC-Chat Funktion so oder so einbauen möchte). Doch wie genau mach ich das ... es kommt in der Console zwar die Anfrage zum DCC-Chat, aber was muss ich antworten, um den DCC-Chat zuzulassen, damit sich der Client dann noch durch ein PW identifizieren kann?

    • Offizieller Beitrag

    Ich hatte das so gelöst, dass alle Aktionen des Bots, die durch mich gesteuert werden sollen, mit /notice eingeleitet werden.
    Damit der Bot "weiß", was er zu sagen hat, übergebe ich den Text innerhalb von $
    Syntax: "/notice Bot-name _FREETEXT $TEXT$"
    _FREETEXT ist dabei das Stichwort, damit der Bot weiß, dass er eine Message zu senden hat, mit _ACTION wird z.B. ein /me .. des Bots ausgelöst.
    NOTICE fragst du ab und rufst dann eine Auswertung auf

    Spoiler anzeigen
    [autoit]

    ;
    ;
    Local $sData = StringSplit($recv, @CRLF)
    For $i = 1 To $sData[0] Step 1
    Local $sTemp = StringSplit($sData[$i], " ")
    If $sTemp[1] = "" Then ContinueLoop
    If $sTemp[1] = "PING" Then _IRCPing($sock, $sTemp[2])
    If $sTemp[0] <= 2 Then ContinueLoop
    Switch $sTemp[2]
    Case 'NOTICE'
    $USER = StringTrimLeft(StringLeft($sTemp[1], StringInStr($sTemp[1], '!')-1), 1)
    $text = ''
    If $sTemp[0] > 3 Then
    For $k = 4 To $sTemp[0]
    If $k = 4 Then
    $text &= StringTrimLeft($sTemp[$k], 1) & ' '
    Else
    $text &= $sTemp[$k] & ' '
    EndIf
    Next
    $text = StringTrimRight($text, 1)
    EndIf
    _AuswertungNotiz($USER, $text)
    ;

    [/autoit]


    In der Funktion _AuswertungNotiz($USER, $text) prüfst du ob der $USER auch du selbst bist ( wer anders hat dem Bot nix zu sagen :D ) und leitest im weiteren die Reaktion des Bots ein.

    Ich habe das noch etwas umfangreicher gelöst, um eine Art KI zu erreichen. Also Reaktion auf Stichworte aus einer Vielzahl von Möglichkeiten, ohne sich zu wiederholen. Direktes Ansprechen der User etc.