Ayuda BOT mIRC

Raya_Powa

Estoy haciendo un BOT de IRC, y ahora estoy en:

ON *:TEXT:!kick *:#Zona.DoD: /kick #Zona.DoD $2 ][ Razon: $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $22 $23 $24 $24 $25 $26 $27 $28 $29 $30 ][ Expulsado por: $nick
ON *:TEXT:!ban *:#Zona.DoD: /ban #Zona.DoD $2 ][ Razon: $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $22 $23 $24 $24 $25 $26 $27 $28 $29 $30 ][ Baneado por: $nick
ON *:TEXT:!voz *:#Zona.DoD: /MODE $chan +v $2
ON *:TEXT:!novoz *:#Zona.DoD: /MODE $chan -v $2
ON *:TEXT:!op *:#Zona.DoD: /MODE $chan +o $2
ON *:TEXT:!noop *:#Zona.DoD: /MODE $chan -o $2
ON *:TEXT:!noban *:#Zona.DoD: /MODE $chan -b $2

Pues lo que quiero q esos comandos solo lo ejecuten los Operadores. No que ahora lo ejecutan los que quieran, y como me ponen !kick RaYa FEOOOO PAKOO, pos me kikean y demas.

Gracias de antemano

A

Tienes dos posibilidades:

La primera añadir niveles de registro en el bot. Para ello usarías on 100:!comando... y darías nivel a quien quieras que lo use. Ejemplo:

ON 100:TEXT:!voz *:#Zona.DoD: /MODE $chan +v $2

Sólo aquellos que tuvieran nivel 100 o superior podrían usar !voz.

La segunda es comprobar que quien usa el comando tiene op en el canal. Ejemplo:

ON *:TEXT:!voz *:#Zona.DoD: {
if ( $nick isop $chan ) { MODE $chan +v $2 }
}

Nota: No uses $2 $3 $4 $5 $6 $7.... , usa $2-
Otra nota:

Puedes hacerlo así, ahorrándote tantos ON:TEXT:

ON :TEXT::#canal: {
if ( $nick isop #canal ) {
if ( $1 == comando1 ) { ... }
elseif ( $1 == comando2 ) { ... }
elseif ( $1 == comando3 ) { ... }
else { ... }
}
else { .msg #canal Debes ser operador. }
}

Raya_Powa

Lei tarde tu respuesta, y lo hice asi:

on 1:text:*:#Zona.DoD {
if (!%elcanal) set %elcanal #Zona.DoD {
if ($1 == !topic) && ($nick isop %elcanal) {
topic #Zona.DoD $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $22 $23 $24 $24 $25 $26 $27 $28 $29 $30

Lo que pasa, esq cuando alguien escribe algo en #Zona.DoD, me salta una alarma del IRCap:

Algunos comandos no funcionan. Esto puede deberse a que el script está dañado debido a una salida irregular o un cuelgue del sistema.

Posiblemente necesites reinstalar el script.

*** ON comando desconocido

*** ON comando desconocido

*** ON comando desconocido

*** ON comando desconocido

*** ON comando desconocido


Algunos comandos no funcionan. Esto puede deberse a que el script está dañado debido a una salida irregular o un cuelgue del sistema.
Posiblemente necesites reinstalar el script.

Asi todas las veces que alguien dice algo en #Zona.DoD

Haber si me podeis ayudar, por cierto #2 gracias por lo de los rangos, lo estaba buscando.

#2

Nota: No uses $2 $3 $4 $5 $6 $7.... , usa $2-. Si uso solo $2, cuando por ejemplo digo !topic Esto es un Topic, solo me pone Esto

LiuM

$2 si, pero si opnes $2- te coge del 2 en adelante

Raya_Powa

ham, vale, y otra cosa, no sabeis de que viene ese error?, esq no molestaria sino sonara Uii Uii

Lo tengo asi en el *.mrc


on 1:text::#Zona.DoD {
if (!%elcanal) set %elcanal #Zona.DoD {
if ($1 == !topic) && ($nick isop %elcanal) {
topic #Zona.DoD $2-
}
}
on 1:text:
:#Zona.DoD {
if ($1 == !kick) && ($nick isop %elcanal) {
kick #Zona.DoD $2 ][ Razon: $2- ][ Expulsado por: $nick
}
}
on 1:text:*:#Zona.DoD {
if ($1 == !voz) && ($nick isop %elcanal) {
MODE $chan +v $2

}
}

Raya_Powa

Ahm weno vale, lo hice asi:

ON :TEXT::#Zona.DoD: {
if ( $nick isop #Zona.DoD ) {
if ( $1 == !pontopic ) { topic #Zona.DoD $2- }
elseif ( $1 == !kick ) { kick #Zona.DoD $2 ][ Razon: $2- ][ Expulsado por: $nick }
elseif ( $1 == !voz ) { MODE $chan +v $2 }
elseif ( $1 == !quitavoz ) { MODE $chan -v $2 }
elseif ( $1 == !op ) { MODE $chan +o $2 }
elseif ( $1 == !quitaop ) { MODE $chan -o $2 }
}
else { .msg #canal Debes ser operador. }
}

como dijo #2 y ya no lo hace, gracias a los dos, de verdad


Editado: #2 Como doy permisos, utlizando 100:IP@PORT en el *.mrc?

jonax

una pregunta directa...

esto te vale para más cosas aparte del irc?

yo sinceramente veo un poco subnormal hacer un bot para moderar un canal, cuando probablemente no necesite ni moderación. Que fuese uno prediseñado que te dijese yo que sé, noticias, rooster, etc vale, pero siendo tal curre creo que es una increible tontería gastar el tiempo en eso(Hombre, en los gathers no viene mal no pero en lo demás... :s )

pd: que si ahora me decís que es C+ o C++ y es un codigo como otro cualquiera ya me callo

A

Lo de los permisos es sencillo. Cuando pones:

ON *:TEXT:!comando...

  • significa que el comando se ejecutará cuando cualquier usuario escriba el comando. Si pones:

ON 100:TEXT:!comando...

Solo aquellos que tengan nivel 100 o superior podrán ejecutar dicho comando. Sabiendo ésto, para dar niveles a los usuarios:

.auser 100 nick
.ruser nick

El primer comando da nivel 100 en el bot a un nick, el segundo quita nivel. Con eso, podrías hacer un script tal que:

on 200:text:!añade*:#: {
.auser 100 $2
.msg $chan Ok, he añadido a $2 a mis usuarios registrados.
}

on 200:text:!quita*:#: {
.ruser $2
.msg $chan Ok, he quitado a $2 de mi lista.
}

Tú tendrías nivel 200 y podrías usar todos los comandos. El resto tendrían nivel 100, y podrían usar los que pusieras hasta nivel 100. (no podrían añadir registros, porque el comando !añade necesita nivel 200)
Puedes poner tantos niveles como quieras.

A

jonax, realmente puedes hacer un montón de cosas, no solamente moderar un canal. Podrías leer feeds RSS, noticias, juegos estilo trivial o scrabble, descargas dcc, buscadores de google, traductores y practicamente cualquier cosa que se te ocurra querer llevar a un canal de irc.

Raya_Powa

No me sale lo de los permisos.... Como e pongo yo lvl 200, añadiendo en el *.mrc :

.auser 200 Ins|RaYa-DoD

jonax

mm... pero, no crees que es demasiado para el "irc" ?

desde luego hay que tener valor para aprender eso, pero no os envidio nada... sabiendo eso podriais estar programando.

erdanblo

No te entiendo jonax, ¿qué quieres decir?

LiuM

Hombre es un lenguaje mas, yo paso bastante tiempo en el irc y me gusta hacer/encontrar cosas de esas. Hay gente que le da por el mirc scripting a otros por el php.. todo es cultura

A

Es una cosa más a aprender. Aprender scripting de mirc no significa que no nos interesemos por C, ASM y otros lenguajes de programación orientados a todo tipo de aplicaciones. A mi particularmente aprender algo de scripting me ayudó a la hora de entender cosas hechas en perl.

Raya_Powa

Bueno sigo sin saber hacer lo de los permisos :S

a lo de jonax:

Me ha dado por aprender scritpting, como tambien me ha dado por aprender php, y estoy conpaginando ambas cosas

RedHat

donde anda kaos-gfx?

jonax

En primer lugar me alegro de que nadie me malinterpretase. En segundo si, realmente quién hace mucho uso del irc puede ser muy interesante, pero yo realmente lo uso para nada más que para hablar con mis amigos, no me molesto más.

Hombre, con los lenguajes php/asp/similares puedes ganarte la vida :)

DarkSoldier

keda claro k el canal es #zona.dod ?

spamer ¬¬ xDDDD

7 meses después
Raya_Powa

Siento revivirlo, pero esq otra vez estoy liado con el bot...

A ver, tengo a:

elseif ( $1 == !topicdj) { topic $chan 7,1][ 0 Welcome to 3GamersRadio 7 [ 0 We Always 3ON 7 Dj $2- ] 0 Spanish eRadio Club 7][ 0 Web under construction 7][ 0 http://84.122.146.51:8000/listen.pls 7][ }

elseif ( $1 == !topicip) { topic $chan 7,1][ 0 Welcome to 3GamersRadio 7 [ 0 We Always 3ON 7 Dj $2 ] 0 Spanish eRadio Club 7][ 0 Web under construction 7][ 0 $3- 7][ }
}

no??

pues, hay alguna forma que en la segunda, en la de topicip, al poner la ip se registre como $ip, y poder poner la primra asi?

elseif ( $1 == !topicdj) { topic $chan 7,1][ 0 Welcome to 3GamersRadio 7 [ 0 We Always 3ON 7 Dj $2- ] 0 Spanish eRadio Club 7][ 0 Web under construction 7][ 0 $ip 7][ }

Saludos :D

A

Ya que quieres hacerlo con un identificador (bastaría con una variable):

alias mi.ip { return $iif(%ip,%ip, "No has seleccionado una ip") }

Y luego...

elseif ( $1 == !topicdj) { topic $chan 7,1][ 0 Welcome to 3GamersRadio 7 [ 0 We Always 3ON 7 Dj $2- ] 0 Spanish eRadio Club 7][ 0 Web under construction 7][ 0 $mi.ip 7][ }

elseif ( $1 == !topicip) { if ($3) { .set %ip $3 } | topic $chan 7,1][ 0 Welcome to 3GamersRadio 7 [ 0 We Always 3ON 7 Dj $2 ] 0 Spanish eRadio Club 7][ 0 Web under construction 7][ 0 $3- 7][ }

LiuM

/set %var valor
/unset

/set %ip 12.12.12.12

Mi ip es %ip

http://www.tomatoma.ws/articulo.php?topic_id=92&forum_id=18

Sino te importa, buscate la vida antes de preguntar.

Saludos

Raya_Powa

Lo ultimo, lo prometo:

if ( $1 == !datos ) }
{ msg $nick Los datos son los siguientes }
{ msg $nick IP: IP }
{ msg $nick PORT: akipuerto }
{ msg $nick PASS: pass }
{ msg $nick Recuerda, cuida estos datos }

si dicen cualquier cosa en el canal, le pasa los datos por query :/

LiuM

Pon el on text entero, porque solo con eso..

Raya_Powa

asi??

ON :TEXT::#GamersRadio: {
if ( $nick isop #GamersRadio ) {
if ( $1 == !datos ) }
{ msg $nick Los datos son los siguientes }
{ msg $nick IP: IP }
{ msg $nick PORT: akipuerto }
{ msg $nick PASS: pass }
{ msg $nick Recuerda, cuida estos datos }

LiuM

ON *:TEXT:!datos:#GamersRadio: {
if ( $nick isop #GamersRadio )
{
.msg $nick Los datos son los siguientes:
.msg $nick lalalaalal
}
}

Raya_Powa

; IRC GamersRadio eBot
; - Programado enteramente por RaYa!
; - #GamersRadio @ Quakenet
; - Abril 2006
; - Funcionando enteramente en mIRC

ON *:TEXT:!datos:#GamersRadio: {
if ( $nick isop #GamersRadio )
{
msg $nick Los datos son los siguientes:
msg $nick IP: IP
msg $nick PORT: akipuerto
msg $nick PASS: pass
msg $nick Recuerda, cuida estos datos
}

ON :TEXT::#GamersRadio: {
if ( $nick isop #GamersRadio ) {
if ( $1 == !pontopic ) { topic $chan $2- }
elseif ( $1 == !kick ) { kick $chan $2 ][ Razon: $2- ][ Expulsado por: $nick }
elseif ( $1 == !voz ) { MODE $chan +v $2 }
elseif ( $1 == !quitavoz ) { MODE $chan -v $2 }
elseif ( $1 == !op ) { MODE $chan +o $2 }
elseif ( $1 == !quitaop ) { MODE $chan -o $2 }

alias mi.ip { return $iif(%ip,%ip, "No has seleccionado una ip") }

elseif ( $1 == !topicdj) { topic $chan 7,1][ 0 Welcome to 3GamersRadio 7 [ 0 We Always 3ON 7 Dj $2- ] 0 Spanish eRadio Club 7][ 0 Web under construction 7][ 0 $mi.ip 7][ }

elseif ( $1 == !topicip) { if ($3) { .set %ip $3 } | topic $chan 7,1][ 0 Welcome to 3GamersRadio 7 [ 0 We Always 3ON 7 Dj $2 ] 0 Spanish eRadio Club 7][ 0 Web under construction 7][ 0 $3- 7][ }

ON *:TEXT:!datos:#GamersRadio: {
if ( $nick isop #GamersRadio )
{
msg $nick Los datos son los siguientes:
msg $nick IP: IP
msg $nick PORT: akipuerto
msg $nick PASS: pass
msg $nick Recuerda, cuida estos datos
}

}
else { .msg #GamersRadio Debes ser operador. }
}

Pues... asi me dice cuando alguien dice !datos por ej

  • /if: insufficient parameters (line 8, bot.mrc)

:S

LiuM

ON *:TEXT:!datos:#GamersRadio: { (A)
if ( $nick isop #GamersRadio )
{ (B)
msg $nick Los datos son los siguientes:
msg $nick IP: IP
msg $nick PORT: akipuerto
msg $nick PASS: pass
msg $nick Recuerda, cuida estos datos
} (B)

} (sobra)
else { .msg #GamersRadio Debes ser operador. }
} (A)

Aparte que lo tienes arriba, luego abajo :S no se revisa eso un poco y ordenalo..

Raya_Powa

lo que no entiendo es lo de (A) y (B)

LiuM

Es para que te fijes en los parentesis que tienes, para identificarlos sin mas, y veas que te sobra uno.

Eso era en el on text de !datos de abajo, en el que tienes arriba ( con uno vale ) tambien tiene su error

ON *:TEXT:!datos:#GamersRadio: { (A)
if ( $nick isop #GamersRadio )
{ (B)
msg $nick Los datos son los siguientes:
msg $nick IP: IP
msg $nick PORT: akipuerto
msg $nick PASS: pass
msg $nick Recuerda, cuida estos datos
} (B)
} (A - faltaba)

Raya_Powa

; IRC GamersRadio eBot
; - Programado enteramente por RaYa!
; - #GamersRadio @ Quakenet
; - Abril 2006
; - Funcionando enteramente en mIRC

ON *:TEXT:!datos:#GamersRadio: {
if ( $nick isop #GamersRadio )
{
msg $nick Los datos son los siguientes:
msg $nick IP: IP
msg $nick PORT: akipuerto
msg $nick PASS: pass
msg $nick Recuerda, cuida estos datos
}
ON :TEXT::#GamersRadio: {
if ( $nick isop #GamersRadio ) {
if ( $1 == !pontopic ) { topic $chan $2- }
elseif ( $1 == !kick ) { kick $chan $2 ][ Razon: $2- ][ Expulsado por: $nick }
elseif ( $1 == !voz ) { MODE $chan +v $2 }
elseif ( $1 == !quitavoz ) { MODE $chan -v $2 }
elseif ( $1 == !op ) { MODE $chan +o $2 }
elseif ( $1 == !quitaop ) { MODE $chan -o $2 }
}
alias mi.ip { return $iif(%ip,%ip, "No has seleccionado una ip") }
}
elseif ( $1 == !topicdj) { topic $chan 7,1][ 0 Welcome to 3GamersRadio 7 [ 0 We Always 3ON 7 Dj $2- ] 0 Spanish eRadio Club 7][ 0 Web under construction 7][ 0 $mi.ip 7][ }
}
elseif ( $1 == !topicip) { if ($3) { .set %ip $3 } | topic $chan 7,1][ 0 Welcome to 3GamersRadio 7 [ 0 We Always 3ON 7 Dj $2 ] 0 Spanish eRadio Club 7][ 0 Web under construction 7][ 0 $3- 7][ }
}
else { .msg #GamersRadio Debes ser operador. }
}

Pero esq lo de el desorden me pasa en todo, hasta cuando programo webs en php y demás...

No se que le pasa!!