0x06: Scripting para mIRC
by Sanot
Holas. Bueno, antes que todo quiero decir dos cosas.
- Este curso esta destinado a mIRC, pero lo que aqui se aprende se puede escibir en otros como Pirch. En el caso de otras plataformas (como Linux) tambien se pueden utilizar pero eso lo veremos a fondo mas adelante.
- El scripting (de IRC) se aplica a un conjunto de rutinas establecidas para un cliente con el fin que favoresca o no al usuario. Por ejemplo, los addons, yo puedo bajar (o hacer) un addon que me proteja contra los deop, eso lo hace algo que me favorece bastante, pero tambien puedo hacer un addon con un codigo secreto en donde este me envie un mensaje diciendome la clave del nick. (Interesante no?) Muchos de los que estan leyendo esto estan conectados este momento al IRC. Y podria apostar que mas del 40% de estos quieren hacer algo bueno con el scripting. Pero el hacer un addon o un script no es cosa facil, lleva tiempo, muchas veces aburre y varias coasas que no voi a seguir diciendo (despues no van a querer leer el articulo) para esto necesitan conocer los comandos del IRC y sus definiciones, aqui tienen una lista.
Comandos
- /ame [texto de acción] .:Envia Accion a todos los canales:.
- /amsg [texto] .:Comando que envia texto a todos los canales:.
- /away [mensaje](opcional) .:al hacerlo por primera vez nos pone Away:.
- /away .:Si lo hacemos por segunda vez nos sacara el away:.
- /ban [#canal] [nick] .:Pone un ban a un nick (prohibicion de entrada):.
- /channel .:Muestra la consola del canal (Modos, Topico, Bans):.
- /clear .:Borra todo lo escrito en un canal:.
- /clearall .:Lo mismo que /clear pero en TODAS las ventanas:.
- /ctcp [nick] PING .:Muestra el lag de un determinado nick:.
- /ctcp [nick] FINGER .:Muestra informacion de un usuario:.
- /ctcp [nick] VERSION .:Muestra el cliente de irc que usa el usuario:.
- /ctcp [nick] TIME .:Muestra la hora segun el reloj interno de la persona:.
- /closemsg [nick] .:Cierra la ventana query con el nick especificado:.
- /creq ASK .:Hace que se te pregunte al momento que te hacen un Dcc Chat:.
- /creq AUTO .:Recive automaticamente todos los Dcc Chat que te envien:.
- /creq IGNORE .:Ignora todos los dcc Chat:.
- /dcc SEND [nick] [Archivo] .:Envia por DCC archivo(s) a un nick:.
- /dcc CHAT [nick] .:Abre una ventana dcc chat al nick:.
- /describe [canal] [acción] .:Envia acccion a un canal:.
- /disconnect .:Fuerza la desconexión inmediata desde el servidor de IRC:.
- /dns [nick|IP] .:Resuelve direccion IP:.
- /echo [nick|#canal|estado|activo][texto] .:Muestra texto en lugar señalado:.
- /exit .:Fuerza al mIRC a desconectar y cerrra el cliente:.
- /font .:Muestra la ventana de seleccion de Letras:.
- /help [palabra] .:Abre archivo de ayuda (del mIRC) y la muestra:.
- /ignore [on | off | nick] .:Ignora a nick o direccion totalmenete:.
- /invite [nick] [#canal] .:Invita otro usuario al canal:.
- /join [canal] .:Entra al canal señalado:.
- /kick [canal] [nick] .:Patea(saca) al nick de un cana especifico:.
- /list [cadena] .:Busca Lista de todos los canales:.
- /load [- modos] [Archivo] .:Carga archivos al mIRC:.
- /log [on | off] .:Graba o termina de grabar la ventana actual:.
- /me [Accion] .:Envia una accion a la ventana activa:.
- /mode [#canal | nick] +/- modos .:Coloca modos a usuario o canal:.
- /msg [canal |nick] [mensaje] .:Envia mensaje a nick o canal:.
- /names [canal] .:Muesta la lista de nicks en un canal:.
- /nick [nuevo nick] .:Cambia de nick:.
- /notice [nick] [mensaje] .:Envia una noticia a un nick:.
- /notify [on | off | nick] .:Activa o no la notificasion de nicks conectados:.
- /onotice [canal] [mensaje] .:Manda un notice a los operadores del canal:.
- /omsg [canal] [mensaje] .:Manda un msg a los operadores de un canal:.
- /part [canal] [Mensaje] .:Hace salir del canal especificado:.
- /partall .:Te hace salir de todos los canales que estás:.
- /query [nick][mensaje] .:Abre una ventana al usuario y envía el mensaje:.
- /quit [razón] .:Desconecta del IRC con un msg optativo:.
- /remote [on | off] .:Activa o no los remotes:.
- /run [directorio] .:Ejecuta el programa especificado:.
- /say [texto] .:Muestra el texto en la ventana activa:.
- /server [servidor][puerto][contraseña]] .:Conecta a un servidor:.
- /time .:Cuenta el tiempo en el servidor utilizado:.
- /timer[N∞] [repeticiones][intervalo en seg] [comando] .:Repite comandos:.
- /topic [canal] [Topic] .:Cambia/Setea el topic de un canal:.
- /whois [nick] .:Muestra informacion de un nick:.
- /whowas [nick] .:Información del nick que se cambio en el IRC:.
Bueno, estos son los comandos que saque de la pagina del mIRC en español,
recuerden que existen mas comandos y estos varian segun su cliente de IRC.
Supongo que muchos quedaron con dudas acerca de palabras. Aqui os expongo un
pequeño glosario. En cada edicion pondre mas palabras
Glosario
- Addon: Rutina que se se escribe en uno o mas archivos, este se ejecuta en el Cliente de irc, cumple una o varias funciones.
- Away: Ausencia se usa cuando estas ocupado(a)
- Bot: Es como un script, su base se situa en los remotes, este actua solo (como un roBOT) y tienen varias funciones (divertir, protejer canales, atacar canales, etc)
- Canal: Su nombre comienza con # (ej. #Syst4t_Team) en el se situan los usuarios, aqui se puede hablar publicamente a todos los que esten en este.
- EggDrop: Bot escrito en lenguaje C que se usa en sistemas de plataforma UNIX estos al igual que los bot trabajan solos y cumplen varias funciones.
- IRCop: un IRCOP (ircoperator) es como un policia dentro de la red. Encargado de velar por que las reglas de esta se cumplan.
- Lag: Retrado que existe entre lo que se escribe y lo que demora en llegar a los otros.
- Op(@): Operador, tiene mas privilegio que los demas usuarios en el canal.
- Plageo: En este topico (no es topíco) hablamos de plageo cuando un usuario copia el trabajo de alguien y lo modifica para darse propios creditos.
- Script: Un script es un conjunto de rutinas que se escriben en el cliente de IRC. Es como un conjunto de varios addons que hacen diferenetes cosas.
- Scripter: Persona comun y corriente que scriptea (simple no?)
- Voice(+): Tiene la posibilidad de hablar junto con los operadores si el canal esta moderado.
Bueno, hasta aqui estamos con los comandos y definiciones, pero aun hai mas; Un script se compone de 4 partes principales que son los Aliases, los Popups, los Remotes y las Variables. Comensaremos con lo mas basico que son los Aliases
ALIASES
Aliases: Los aliases se escriben en los aliases del cliente (que obvio no?) (si estas con mIRC preciona Alt +A) Como el nombre lo dice son Alias, es decir formas cortas de decir algo. Doi un ejemplo, todos sabemos que para entrar a un canal debemos tipear /join #canal, entonces si yo siempre entro al canal #Syst4t_team y me da una paja escribir siempre /join #Syst4t_team puedo usar un aliases, Su sintaxis para usarlo es /alias /comando(s). Si yo quiero que al escribir /syst4t entre al canal debo poner en los aliases
/syst4t /join #Syst4t_Team
ahora si quiero usar varios comandos debo hacer lo mismo pero añadirle otras cosas, por ejemplo yo escribi escribi en los aliases
/entrar_canales /join #syst4t_team | /join #chile | /join #Krime
con eso si yo escribo /entrar_canales voi a entrar a #Syst4t_team a #chile y a #krime al mismo tiempo... Otro ejemplo, yo quiero desconectarme siempre con el mensaje Chao Amig@s.. ya regreso (sabemos que debo scribir /quit Chao Amig@s.. ya regreso) pero eso es muy largo y me demoro mucho entonces solo escribo en mis aliases
/chao /quit Chao Amig@s.. ya regreso Simple no???
Advertencia: Te recomiendo que hagas esto sin un script, ya que el script ya esta hecho y si le añades cosas puede causar conflico con las que ya tiene y hacerte pasar un mal rato.
Recuerda que el nombre que le das al alias (lo que escribes para ejecutar el comando) debe comensar con "/" al igual que el del comando. NO IMPORTA EL NOMBRE QUE LE DES, es decir el nombre del alias no influye en el comando. Bueno, una vez que esten aqui ya deberan entender como hacer un aliases si no entienden leanlo de nuevo o consulten en algun canal como #IRCAyuda (en el caso de DALnet).
Esa es la base de los aliases, pero aun ahi mas; para hacer mas interactivo el scripting se han creadoi un conjunto de strings, algo asi como variables que cumplen una sola funcion, aqui va una lista (solo pondre algunas, mas adelante podran ver mas).
$+ =
Junta strings con textos, numeros, etc
- $time = Hora segun nuestro computador
- $date = Fecha segun nuestro computador
- $me = Nuestro nick
- $server = El servidor por wl qe estamos conectados
- $ip = Nuestra IP
- $chan = Canal Activo
- $vnick = Nick al que se ha dado voice
- $onick = Nick al que se ha dado OP
- $knick = Nick al que cual se ha pateado
- $mircdir = Directorio donde tenemos el mIRC32/16.exe
- $1 = Representa a lo primero
- $2 = Representa a lo segundo
- $3 = Representa a lo tercero (de los argumentos)
Bueno, con esto ya podemos crear unas variables mas interactivas, veamos algunos ejemplos.
/Hora /echo -s Son las $time
Que hace esto? Simple, al escribir /Hora le pide al mIRC que imprima en la ventana de estado ( -s ) el texto Son las XX:XX:XX ( Ej. Son las 18:52:35 )
Veamos otro.
/Ip_todos /amsg Mi IP es =$IP=
Esto manda un mensaje a todos los canales donde estoi ( /amsg ) diciendoles Mi Ip es =xxx.xx.xx.xxx= Ohh..... error, no lo dice bien, no manda mi IP... por que????? Simple, esto ocurre por que se produce un conflicto entre los = y $IP. Como deberia ser el comando entonces?
/Ip_todos /amsg Mi IP es = $+ $IP $+ =
OK! Ahora si, si observan bien veran que $+ junto los "=" con mi numero IP.
Bueno, una vez que esten aqui ya deberan comprender bien el uso de los aliases, de lo contrario... Lean de nuevo Xp
FIN ALIASES
Bueno, como habran visto los aliases nos sirven cuando queremos hacer atajos de comandos. Ustedes pueden adecuar esto tambien a los servicios de su nick (Por ejemplo en el caso de DALnet, podrian hacer algo como
/Identificar /nickserv identify *****
(**** representa su clave)
Bueno, eso lo dejo a su imaginacion, con el scripting pueden hacer todo!
POPUS
Bueno, ya sabemos como usar los aliases, sabemos que si no queremos escribir algo tan largo usamos un popus, solo escribimos un comando. Pero que tal si en vez de escribir un solo comando solo hacemos un click con el mouse. Seria lindo no? pero no se puede hasta la version 8.8 del mIRC, por lo que dejamos hasta aqui este articulo...
Sanot
Hehehe... no, es broma, claro que se puede, esto es mas facil que los popus pero debemos tener un poco mas orden.
Para accesder a los popus deben mantener Alt y precionar P (Alt + P). Bueno, exolicaremos que hay vastantes tipos de popus.
- MenuBar: Es el menu que esta arriva.
- NickList: Lista que aparese al hacer click con el mouse en un nick.
- Query/Chat: Menu flotante que aparece en los privados
- Channel: Menu que aparece en en los canales -Status: Es el menu flotante que esta en la ventana de Estado.
Los popus ejecutan comandos que pueden ser aliases o comandos ahi mismo descritos.
Veamos un ejemplo
Ver
- Hora:/hora
- Fecha:/echo -s Estamos a $date $+ .
- Ip:/echo -a Mi IP es $IP
- Servidor:/echo -a El servidor es $server
Bueno, que muestra esto, al hacer click con esto, nos va a salir el cuadrito VER y una flechita a la derecha, al pocisionarnos en el cuadro nos va a tirar un sub-menu que dice
- Hora (usa el aliases que creamos anteriormente)
- Fecha (Imprime en el estatus la fecha y un punto seguido de este al final)
- IP (Imprime en la ventana activa el texto mi Ip es seguido de nuestra UP)
- Servidor (Imprime en el estatus el servidor en que estamos)
Bueno, parece dificil pero no lo es. Veamos otros ejemplos
Canales
- Chilenos
- Hack
- ..#Syst4t_team:/join #syst4t_team
- ..#Hackermundo:/join #hackersmundo
- ..#hackersespaña:/join #hackersespaña
- Varios
- ..#Computador:/join #computador
- ..#ircayuda:/join #ircayuda
- ..#DALnetAyuda:/join #dalnetayuda
Bueno, esto nos muestra un cuadro que dice Canales y un submenu que dice
- Chilenos
- Hack
- Varios
Y a la vez estos tienen otro submenu con varios canales.
recuerden que ustedes pueden adecuar estos menus a donde ustedes quieran.
Voi a dar algunas ideas para:
*MenuBar:
Syst4t
Conectar
DALnet
- ..Twisted:/server twisted.ma.us.dal.net
- ..Global:/server global.dal.net
- ..-
- ..irc:/server irc.dal.net
Chilenos
- ..Terra:/server irc.terra.cl
- ..mIRC:/server www.mirc.cl
- ..ELSitio
- ...ChatX:/server chatx.elsitio.com
- ...IRC:/server irc.elsitio.com
Entrar
- Chile:/join #chile
- Syst4t_team:/join #syst4t_team
- Otro:/join $?="Canal:"
Cambiar Nick
- CaeSpcok:/nick CaeSpock
- Taz:/nick Taz
- Otro:/nick $?="Tipea el Nick"
Uff, bueno, que tenemos aqui, vamos por parte.
Syst4t= Se ve en las opciones, generalmente aqui va el nombre del script.
Conectar
- DALnet
- ..Twisted:/server twisted.ma.us.dal.net
- ..Global:/server global.dal.net
- ..-
- ..irc:/server irc.dal.net
- Chilenos
- ..Terra:/server irc.terra.cl
- ..mIRC:/server www.mirc.cl
- ..ELSitio
- ...ChatX:/server chatx.elsitio.com
- ...IRC:/server irc.elsitio.com
Bueno, esto nos da la lista Conectar y nos entrega varios servidores para elegir, si ven sale ..- < Esto hace una separacion (una linea) entre Global e irc, ideal para separar cosas de interes con las basicas. TB tenemos el - que separa Conectar y Entrar.
Entrar
- Chile:/join #chile
- Syst4t_team:/join #syst4t_team
- -
- Otro:/join $?="Canal:"
Esto nos da la posibilidad de entrar en canales. Aqui tenemos un nuevo string, el $?="" Esto nos muestra un cuadro de peticion donde (en este caso) dice Canal: y al escribir algo va a entrar ahi. Se puede usar con /server $?="Servidor:" o lo que ustedes quieran.
Cambiar Nick
- CaeSpcok:/nick CaeSpock
- Taz:/nick Taz
- Otro:/nick $?="Tipea el Nick"
Bueno, aqui nos da la posibilidad de cambiar de nick a CaeSpock, Ta o el que ustedes quieran.
Esto del MenuBar tambien lo pueden usar para status, ya que cumplen una funcion no muy diferente.
*NickList:
Quien es:/whois $1
IP:/dns $1
Control
- Op
- ..Dar:/mode # +o $1
- ..Quitar:/mode # -o $1
- Voice
- ..Dar:/mode # +v $1
- ..Quitar:/mode # -v $1
- -
- Patear:/kick $chan $1 $?="Razon"
- Banear:/mode # +b $1
- CTCP
- Ping:/ctcp $1 ping
- Version:/ctcp $1 version
- Time:/ctcp $1 time
- DCC
- Send:/dcc send $1
- Chat:/dcc chat $1
Ok, aqui tenemos el menu de nicks.
Quien es:/whois $1
IP:/dns $1
Aqui tenemos dos cosas nuevas, una es el whois que ve la informacion de la persona. Pero que es el $1. El $1 (para que entiendan) representa a lo que hablamos, es decir si estamos hablando de hacer un whois a Monitor hablamos de /whois $1 donde $1 representa a Monitor.
Control
- Op
- ..Dar:/mode # +o $1
- ..Quitar:/mode # -o $1
- Voice
- ..Dar:/mode # +v $1
- ..Quitar:/mode # -v $1
- -
- Patear:/kick $chan $1 $?="Razon"
- Banear:/mode # +b $1
Aqui tenemos el control, (solo operadores) donde se nos permite dar @, dar +, patear y banear. Si recordamos el comando para dar voice seria
/mode #canal +v nick (ej. /mode #syst4t_team +v Konejo
aqui tenemos "/mode # +v $1" donde # representa al canal activo, y $1 al nick del cual estamos hablando.
CTCP
- Ping:/ctcp $1 ping
- Version:/ctcp $1 version
- Time:/ctcp $1 time
DCC
- Send:/dcc send $1
- Chat:/dcc chat $1
Aqui tenemos un CTCP (Ping, Version y Time) donde reprsentamos
"/ctcp $1 <tipo ctcp>" O /ctcp nick <tipo ctcp>
y DCC Send y Chat "/dcc <tipo dcc> $1" o /dcc <tipo dcc> nick
Bueno amigos, aqui tenemos ya una explicasion casi conclusa acerca de los popus, en nuestra proxima seccion los veremos mas a fondo, veremos los remotes las variables y varias cosas mas de bastante interes
Sanot