1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Wildcards, If und onchan...

Dieses Thema im Forum "Eggdrop Scripting" wurde erstellt von Allekatrase, 26. März 2015.

  1. Allekatrase

    Allekatrase New Member

    Hallo,
    ich habe für meinen Bot einige Befehle erstellt, die abhängig davon, ob die Person online ist, einen Satz ausgeben:
    Code:
    proc Beispiel {nick host handle channel arg} {
        global funstuff_enabled botnick
    
        if {[onchan Beispiel $channel]} {
        set txt "Der Bot sieht: Beispiel ist schon Online."
        } else {
        set txt "Der Bot ruft Beispiel!"
        }
    
        mxirc_action $channel $txt
    }
    So, jetzt stehe ich aber vor dem Problem, dass ich auch Nutzer abfragen will, von denen ich nur den Anfang des Namens weiß. Denn wenn man sich über den Webchat verbindet, bekommt man den Namen "Beispiel". Ist aber schon jemand mit diesem Namen online, so wird "Beispiel_x" als Nickname genommen, wobei x für irgendeine Zahl steht, meist tausend bis zehntausend.
    Wie frage ich nun nach dem Namen? Ich bekomme es einfach nicht hin, da eine Wildcard hinzusetzen.

    Gruß,
    Allekatrase
  2. Rushh0ur

    Rushh0ur Active Member c-b Experte

    Vorweg, ich kenne mich mit IRC Bots nicht aus. Die sind anscheinend in TCL programmiert.

    Deine Beispielfunktion ist anscheinend eine Callback Funktion mit den angegeben Parametern, wobei nick der Name des Benutzers ist der sich eingeloggt hat. Mit einem einfachen String Vergleich sollte man dann auch Wildcards erkennen:

    Code:
     if {[string match "Beispiel*" $nick]} 
  3. Allekatrase

    Allekatrase New Member

    Das Problem ist, dass "$nick" nicht definiert ist. "{nick host handle channel arg}" stehen eigentlich nur da, damit es nicht zu Verwirrungen beim Bot kommt, wenn jemand doch noch Parameter an den Befehl übergibt.
    Die Lösung, die ich jetzt gefunden habe:
    Code:
    proc new {nick host handle channel arg} {
        global funstuff_enabled botnick
    
        if {[lsearch [chanlist #CHANNEL] Beispiel*] > -1 } {
        set txt "sieht: Beispiel  ist online."
        } else {
        set txt "Beispiel ist offline !"
        }
    
        mxirc_action $channel $txt
    }
    Gruß,
    Allekatrase