Mensajes recientes

Páginas: 1 ... 8 9 [10]
91
Ayuda scripting IRcap / Re:Antispam
« Último mensaje por Cadaver en Marzo 31, 2021, 05:39:37 pm »
Ya en el foro se había publicado por mí algo similar para "malas palabras"  que al fin de cuentas sirve para este mismo caso incluía los comandos de agregar palabras y excepciones, nada mas busquen el post.

Este código esta bien y debería funcionar en todas las versiones pero no es así (v7.32 funciona):
Código: [Seleccionar]
//var %a comií | if ($regex($strip(%a),/\b(?:http|www|com|org|net)\b/i)) { echo -a detectado }
Dando una revisada por el foro, el código que les mencione fue eliminado como muchos otros de mi autoría.
92
Ayuda scripting IRcap / Re:Antispam
« Último mensaje por Hanna en Marzo 30, 2021, 08:11:20 pm »
Buenas tardes.

Entonces si no he entendido mal.

- Si pongo que solo puedan añadir y quitar listar el spam ciertos usuarios con nivel en mi Bot.
- Y que solo actué en ciertos canales el spam.
- ¿Es posible que se vaya a un documento de texto en vez de a una variable?


¿Cómo podría hacerlo para que solo puedan usar el comando de agregar/quitar/listar gente de nivel?

He puesto la línea que has dicho, pero arriba sigue la del @ + % y no me gustaría que esos pudieran añadir spam en mi bot, si no como está abajo solo usuarios con nivel 100.

Así tengo ahora el código dime por favor que línea debo borrar.

Código: [Seleccionar]
on *:TEXT:*:#: {
  var %canalesactivos #cadiz #sevilla #madrid
  if (!$wildtok(%canalesactivos,$chan,0,32)) { return }
  ; == Aquí se agregaran las excepciones, el nick debe ser op en el canal e iniciar con .addexspam la frase
  if (($nick isop $chan) && (.addexspam == $strip($1))) { var %a $left($2,1), %b $right($2,-1)
    if ((+ = %a) ||  (%a = -) || (%a = ?)) { goto %a
      :+
      if ($istok(%excepciones.spam,%b,32)) { .notice $nick ya esta agregada %b en las excepciones }
      else { set %excepciones.spam $addtok(%excepciones.spam,%b,32) | .notice $nick fue agregado %b $+, compruébelo usando: .addexspam ? }
      return
      :-
      if (!$istok(%excepciones.spam,%b,32)) { .notice $nick No esta agregada %b en las excepciones }
      else { set %excepciones.spam $remtok(%excepciones.spam,%b,32) | .notice $nick fue eliminado %b $+, compruébelo usando: .addexspam ? }
      return
      :? | .notice $nick Las excepciones son: %excepciones.spam | return
    }
    else { .notice $nick Por favor $nick use: .addexspam (?/+/-)la*pabra (se permite el uso de comodines *) | return }
  }
  ; === si el nick no es un nick regular(@,v) entonces termina
  if ((!$nick(#,$nick,r)) || ($ulevel = 100)) { return }
  tokenize 32 $replace($lower($1-),$chr(225),a,$chr(233),e,$chr(237),i,$chr(243),o,$chr(250),u)
  ; === si la cadena de texto tiene algún tipo de spam, entrara
  if ($regex($strip($1-),/\b(?:https|www|com|org|net)\b/i)) {
    ; === revisa si esta la excepción y si lo esta sale
    var %a 1 | while ($gettok(%excepciones.spam,%a,32)) { if ($wildtok($strip($1-),$ifmatch,0,32)) { return } | inc %a }
    ; === No se encontró una excepción, procede a sancionar.
    ban -ku600 $chan $nick 2 Publicidad no permitida en el canal | msg #canaldebug Web Expulsando a $+($nick,$chr(40),$address,$chr(41)) por : $1-
  }
}
;EOF

Muchas gracias!!!
93
Ayuda scripting IRcap / Re:Antispam
« Último mensaje por Quetzalcoatl en Marzo 29, 2021, 11:26:17 pm »
Citar
Tengo otra duda, en el código que puso Hanna he visto que se puede poner que solo puedan usar el comando de cierto nivel, y mi duda es, está bien puesto como lo ha puesto Hanna?
No habia mirado como lo puso, pero se supone que
Código: [Seleccionar]
   ; == Aquí revisa si el usuario tiene un nivel, de modificación para que no sea tomado en cuenta al validar su texto
  if ($ulevel = 100) { return }
debe de estar dependiendo del uso que se implemente como se menciona en la respuesta #6 de este tema, en la parte final hay otras opciones, que quizás te sean de interés.

En el caso de lo que ha puesto Hanna esa linea de verificación de nivel debe estar antes de la evaluación de antispam, es decir así como lo tiene, debe ir  antes y/o después de
Código: [Seleccionar]
if (!$nick(#,$nick,r)) { return } o mezclada con ella con ||, quedando como
Código: [Seleccionar]
if ((!$nick(#,$nick,r)) || ($ulevel = 100)) { return } específicamente para el código que Hanna puso en la respuesta #9 debido a que los que pueden agregar las excepciones serian los ops del canal, pero usuarios que no sean regulares(+@,+v,+~,+%) estarán exentos de poner lineas que contengan spam. Eso se menciona en la respuesta #6, siendo que no se sancionaran los usuarios de ese nivel igual se tendría que modificar agregando la verificación de nivel para que también pudieran agregar excepciones sin ser ops o dar un rango como un (100 <= $ulevel <= 120), si es que se meteran personal en el bot como root, master, mantenimiento, protegidos, etc.

Saludos.

PD: la misma posdata de la respuesta #6.
94
Ayuda scripting IRcap / Re:Antispam
« Último mensaje por rayco en Marzo 29, 2021, 09:07:21 pm »
Buenas noches.

Pues yo acabo de leerlo... y no me enterado de nada (lo del Wikipedia), y no me enterado de mucho o nada xDDDDDDDDD

¡Te agradezco la ayuda!

Tengo otra duda, en el código que puso Hanna he visto que se puede poner que solo puedan usar el comando de cierto nivel, y mi duda es, está bien puesto como lo ha puesto Hanna?

Es que me parece muy buena idea esa.

¡Gracias!
95
Ayuda scripting IRcap / Re:Antispam
« Último mensaje por Quetzalcoatl en Marzo 29, 2021, 08:38:05 pm »
el problema es el acento rayco

quizás sea un bug en el mirc, ya que cualquier palabra acentuada la esta tomando, es que contiene una buscada en el regex, o quizás esta mal la implementacion, no soy tan experto en expresiones regulares(https://es.wikipedia.org/wiki/Expresi%C3%B3n_regular), pero si me han facilitado muchas cosas. quizás alguien que si sea experto podría encontrar la solución a ello o se puede poner un while o wildtok,instok,etc para el chequeo, lo que impilicaria meter bucles para cada palabra y/o meter un filtro para que no metan caracteres especiales, que siendo los acentos se toman como caracteres especiales, y lo mas probable es que suceda lo mismo, lo anterior dicho se puede comprobar con:

//var %a comí | if ($regex($strip(%a),/\b(?:http|www|com|org|net)\b/i)) { echo -a detectado }
//var %a comi | if ($regex($strip(%a),/\b(?:http|www|com|org|net)\b/i)) { echo -a detectado }
//var %a comií | if ($regex($strip(%a),/\b(?:http|www|com|org|net)\b/i)) { echo -a detectado }


lo que se puede hacer es un tokenize para poner en minúsculas y usar un replace, por que es mas fácil poner los replaces de un carácter en especifico que usar uno para mayúsculas y otro minúsculas, según la tabla ascii, o que estar agregando excepciones por cada wwwá,wwwé..... sucesivamente hasta............ netú --> http|www|com|org|net
á => ASCII: 225 Octal: \341 HEX: \xE1
é => ASCII: 233 Octal: \351 HEX: \xE9
í => ASCII: 237 Octal: \355 HEX: \xED
ó => ASCII: 243 Octal: \363 HEX: \xF3
ú => ASCII: 250 Octal: \372 HEX: \xFA

Una ves explicado el punto, seria cuestión de agregar una linea que nos haga el trabajo sucio de los acentos
Código: [Seleccionar]
tokenize 32 $replace($lower($1-),$chr(225),a,$chr(233),e,$chr(237),i,$chr(243),o,$chr(250),u)el cual debe ser agregado después de la linea que contiene
Código: [Seleccionar]
if (!$nick(#,$nick,r)) { return }
Probando el tokenize individualmente
Código: [Seleccionar]
//var %a holá ¿cómo estÁs tú? | tokenize 32 $replace($lower(%a),$chr(225),a,$chr(233),e,$chr(237),i,$chr(243),o,$chr(250),u) | echo -a *variable%a* %a **remplazo** -- $1-
nos da como resultado:
*variable%a* holá ¿cómo estÁs tú? **remplazo** -- hola ¿como estas tu?

Sin más por el momento.
96
Ayuda scripting IRcap / Re:Antispam
« Último mensaje por rayco en Marzo 29, 2021, 04:37:59 pm »
Buenas noches.

Pues yo probé el código que pusiste, y tiene un error.

Código: [Seleccionar]
on *:TEXT:*:#: {
  ; == Aquí se agregaran las excepciones, el nick debe ser op en el canal e iniciar con .addexspam la frase
  if (($nick isop $chan) && (.addexspam == $strip($1))) { var %a $left($2,1), %b $right($2,-1)
    if ((+ = %a) ||  (%a = -) || (%a = ?)) { goto %a
      :+
      if ($istok(%excepciones.spam,%b,32)) { .notice $nick ya esta agregada %b en las excepciones }
      else { set %excepciones.spam $addtok(%excepciones.spam,%b,32) | .notice $nick fue agregado %b $+, compruébelo usando: .addexspam ? }
      return
      :-
      if (!$istok(%excepciones.spam,%b,32)) { .notice $nick No esta agregada %b en las excepciones }
      else { set %excepciones.spam $remtok(%excepciones.spam,%b,32) | .notice $nick fue eliminado %b $+, compruébelo usando: .addexspam ? }
      return
      :? | .notice $nick Las excepciones son: %excepciones.spam | return
    }
    else { .notice $nick Por favor $nick use: .addexspam (?/+/-)la*pabra (se permite el uso de comodines *) | return }
  }
  ; === si el nick no es un nick regular(@,v) entonces termina
  if (!$nick(#,$nick,r)) { return }
  ; === si la cadena de texto tiene algún tipo de spam, entrara
  if ($regex($strip($1-),/\b(?:http|www|com|org|net)\b/i)) {
    ; === revisa si esta la excepción y si lo esta sale
    var %a 1 | while ($gettok(%excepciones.spam,%a,32)) { if ($wildtok($strip($1-),$ifmatch,0,32)) { return } | inc %a }
    ; === No se encontró una excepción, procede a sancionar.
    ban -ku600 $chan $nick 2 Publicidad no permitida en el canal | msg #canaldebug Web Expulsando a $+($nick,$chr(40),$address,$chr(41)) por : $1-
  }
}
;EOF

Código: [Seleccionar]
16:29:01 <uxue> Sí y me lo comí
16:29:01 rand pone modo +b *!*@Cnl.72G.j4bA1C.virtual
16:29:02 Baneados: uxue
16:29:02 Kick: uxue fue kickeado por rand [ Publicidad no permitida en el canal ]

Por si tienes que darle un repaso.  ;)
97
Acerca de ForoIRcap.org / Re:¿Para cuando compatibilidad con mIRC 7.51?
« Último mensaje por Knivest en Marzo 24, 2021, 02:47:30 am »
Quizá esto te sirve: Stream desde teléfono
98
Ayuda scripting IRcap / Re:Antispam
« Último mensaje por Hanna en Marzo 22, 2021, 02:25:09 am »
Buenas noches, si no estoy mal entendido, si quiero que solo afecte a los canales "generales" y no a los ops, lo mejor es la segunda opción, no?

Ahora mismo lo tengo así:

Código: [Seleccionar]
on *:TEXT:*:#: {
 var %canalesactivos #cadiz #sevilla #madrid
 if (!$wildtok(%canalesactivos,$chan,0,32)) { return }
   ; == Aquí revisa si el usuario tiene un nivel, de modificación para que no sea tomado en cuenta al validar su texto
  if ($ulevel = 100) { return }
  ; == Aquí se agregaran las excepciones, el nick debe ser op en el canal e iniciar con .addexspam la frase
  if (($nick isop $chan) && (.addexspam == $strip($1))) { var %a $left($2,1), %b $right($2,-1)
    if ((+ = %a) ||  (%a = -) || (%a = ?)) { goto %a
      :+
      if ($istok(%excepciones.spam,%b,32)) { msg # 3[Web]: Ya esta agregada %b en las excepciones }
      else { set %excepciones.spam $addtok(%excepciones.spam,%b,32) | msg # 3[Web]: Fue agregado %b $+, compruébelo usando: .addexspam ? }
      return
      :-
      if (!$istok(%excepciones.spam,%b,32)) { msg # 3[Web]: No esta agregada %b en las excepciones }
      else { set %excepciones.spam $remtok(%excepciones.spam,%b,32) | 3[Web]: Fue eliminado %b $+, compruébelo usando: .addexspam ? }
      return
      :? | msg # 3[Web]: Las excepciones son: %excepciones.spam | return
    }
    else { msg # 3[Web]: Por favor $nick use: .addexspam (?/+/-)la*pabra (se permite el uso de comodines *) | return }
  }
  ; === si el nick no es un nick regular(@,v) entonces termina
  if (!$nick(#,$nick,r)) { return }
  ; === si la cadena de texto tiene algún tipo de spam, entrara
  if ($regex($strip($1-),/\b(?:http|https|www|com|org|net)\b/i)) {
    ; === revisa si esta la excepción y si lo esta sale
    var %a 1 | while ($gettok(%excepciones.spam,%a,32)) { if ($wildtok($strip($1-),$ifmatch,0,32)) { return } | inc %a }
    ; === No se encontró una excepción, procede a sancionar.
    ban -ku600 $chan $nick 2 [Web] Publicidad no permitida en el canal | msg #cogotazos 3[Web]:  Expulsando a $+($nick,$chr(40),$address,$chr(41)) por : $1-
  }
}
;EOF

¿Está todo correcto así?

Saludos!!!!
99
Ayuda scripting IRcap / Re:Antispam
« Último mensaje por Quetzalcoatl en Marzo 21, 2021, 05:33:25 pm »
es correcto pero la variable de %canalesactivos debe ser declarada antes de el if, para que tenga efectos.
Ya se que optes por
Código: [Seleccionar]
on *:TEXT:*:#: {
 var %canalesactivos #cadiz #sevilla #madrid
 if ($chan !isin %canalesactivos) { return }
o por un
Código: [Seleccionar]
on *:TEXT:*:#: {
 var %canalesactivos #cadiz #sevilla #madrid
 if (!$wildtok(%canalesactivos,$chan,0,32)) { return }
la diferencia es que en el primero si el canal no esta insertado en la variable de %canalesactivos no actuara, pero si existe un canal de #cadiz y un #cadiz_ops, actuara en ambos.
En el segundo busca en la variable el canal y si lo encuentra es negado y continua, pero si el canal no esta entonces regresa, igual puedes usar otro tipo de identificador para verificar el token, pero tendrías que negarlo con !, si es que deseas un resultado similar.

Igual puedes hacer una estructura similar que la que se usa en el .addexspam +,-,? para tener la variable %canalesactivos como permanente así controlarle a la distancia, obviamente reaccionaria a un comando diferente u otra forma re-estructurar ese código y solo hacer peticiones para que se encargue un alias de la modificación de las variables por medio del uso de los corchetes ya que si seria mas facil si es que piensas meter otras protecciones a futuro como antibadwords y sus excepciones, antibadnicks y excepciones, etc.

Saludos
100
Ayuda scripting IRcap / Re:Antispam
« Último mensaje por Hanna en Marzo 21, 2021, 12:33:15 pm »
Buenas tardes.

Muchas gracias por todos los ejemplos, pero me interesaría eso que dice en varias salas a la vez.

Código: [Seleccionar]
on *:TEXT:*:#: {
if ($chan !isin %canalesactivos) { return }
var %canalesactivos #cadiz #sevilla #madrid

¿Seria así?

Saludos.
Páginas: 1 ... 8 9 [10]
anything