Usar el nick del bot para ejecutar comandos

Si estás en un canal que tiene varios bots, quizás no quieres ejecutar un comando y que todos los bots te devuelvan la misma información, o un error equivalente.

Puedes usar algo como lo siguiente:

# De entrada a muchos les parecería que poner: bind pub - * $::botnick
# sería una buena idea, pero hay que pensar que $::botnick es una variable estática que no cambia
# si el bot cambia de nick en el IRC, por ejemplo cuando el suyo está ocupado o por cualquier razón
# de split. 
# La manera adecuada es la siguiente:

bind pubm - * triggerBot
proc triggerBot {nick uhost hand chan text} {
    set trigger [lindex [split $text " "] 0]

    if {![isbotnick $trigger]} {
        return
    }
    set rawText [join [lrange [split $text " "] 1 end] " "]
    # Esta parte es la más complicada ya que es la que hace el "hack"
    # para que el bot interprete la línea como si hubiese sido enviada normalmente
    *raw:irc:msg $nick!$uhost PRIVMSG "$chan :$rawText"

}

Leave a Reply