This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

kick timer

Help for those learning Tcl or writing their own scripts.
b
bwkzb
Voice
Posts: 16
Joined: Sun Mar 12, 2017 4:26 am

kick timer

Post by bwkzb »

Code: Select all

set channel "#vhost"
set operid "flood"
set operpass "floodflood"

bind evnt - init-server oper
bind pub -|- !vhost vhost
bind join -|- * join

proc oper init-server { putserv "OPER $::operid $::operpass" }
proc join {nick host handle chan } {
 if { $chan == $::channel } {
   putserv "privmsg $chan para obtener tu host tipea !vhost <tu.host.que-quieras> NOTA: el vhost solicitado sera revisado para su aprobación"
  }
}
proc vhost {vhostnick vhosthost vhosthand vhostchan vhosttext} {
 if { $vhostchan == $::channel } {
   checkvhost $vhostnick $vhosttext
}
}

set badwords { *<censored>* *maricon* *chupalo* *pico* *conchatumare* *admin* *adminetchat* *services* *ñ* *^* *+* *´<*  *#* *ircop* *sex* *ircops* }
proc checkvhost { checknick vhostcheck } {
 if {[string match "*.*" [string tolower $vhostcheck]]} {
  set temp 0
  set results 0
   #$temp<=X X = number of space delimited tokens in the badwords variable.
   while {$temp<=47} {
     foreach x [string tolower $::badwords] {
     if {[string match $x [string tolower $vhostcheck]]} {
     incr results }
    }
    incr temp
   }
   unset temp
   if { $results > 0 } {
   putserv "privmsg #vhost $checknick Lo siento el vhost no puede ser \002$vhostcheck\002"
   } else {
   putserv "PRIVMSG hostserv set $checknick $vhostcheck"
   putserv "MODE #vhost +b $checknick"
   putserv "PRIVMSG #vhost tu vhost solicitado se ha aprobado con exito, tipea /hs on para activarlo"
   putserv "PRIVMSG #vhost tu nuevo host es \002$vhostcheck\002"
putserv "kick #vhost $checknick"
   }
  } else {
putserv "privmsg $::channel $checknick faltan parametros"
  }
}
How can I add a timer to the kick so that the user is kicked out of the channel in a minute if it is not removed

Thank you
User avatar
Arnold_X-P
Master
Posts: 226
Joined: Mon Oct 30, 2006 12:19 am
Location: DALnet - Trinidad - Beni - Bolivia
Contact:

Re: kick timer

Post by Arnold_X-P »

your tcl was containing many errors which I tried to resolve
but it works already very well
----
tu tcl contenia muchos errores los cuales trate de resolver
pero ya funciona muy bien, solo agrega el nombre del canal y listo lo demas ya se jala solo..
cambia solo estos sets set channel, set operid, set operpass, el nombre del canal por el tuyo, el acceso ircop por el acceso que tenga tu bot y listo.. la parte de abajo dejala tal cual no la modifiques solo cambia los sets mencionados.

Code: Select all

# esta parte es sencible a mayusculas o minusculas escribe bien el nombre
# de tu canal. / name of channel assistance
set channel "#vhost"
set operid "id-ircop"
set operpass "your-pass-ircop"
# tiempo de duracion del ban en minutos / bantime in minutes
set bantimevhost 1 

bind evnt - init-server oper
bind pub -|- !vhost vhost
bind pub -|- .vhost vhost
bind join -|- * join

proc oper init-server { putserv "OPER $::operid $::operpass" }
proc join {nick host handle chan } {
 if { $chan == $::channel } {
   putserv "privmsg $chan para obtener tu host tipea \2!vhost tu.host.que-quieras\2 ejemplo !vhost soy.novato \2NOTA\2: el vhost solicitado sera revisado para su aprobación"
  }
}
proc vhost {vhostnick vhosthost vhosthand vhostchan vhosttext} {
 if { $vhostchan == $::channel } {
   checkvhost $vhostnick $vhosttext
 }
}

set badwords { *<censored>* *maricon* *chupalo* *pico* *conchatumare* *admin* *adminetchat* *services* *ñ* *^* *+* *´<* *#* *ircop* *sex* *irc0p* *Opers*}
proc checkvhost { checknick vhostcheck } {
global 
 if {[string match "*.*" [string tolower $vhostcheck]]} {
  set temp 0
  set results 0
   #$temp<=X X = number of space delimited tokens in the badwords variable.
   while {$temp<=47} {
     foreach x [string tolower $::badwords] {
     if {[string match $x [string tolower $vhostcheck]]} {
     incr results }
    }
    incr temp
   }
   unset temp
   if { $results > 0 } {
   putserv "privmsg $::channel :\2$checknick\2 Lo siento el vhost no puede ser \002$vhostcheck\002"
   } else {
   putserv "PRIVMSG hostserv set $checknick $vhostcheck"
   putserv "PRIVMSG $::channel :tu vhost solicitado se ha aprobado con exito, tipea \2/hs on\2 para activarlo"
   putserv "PRIVMSG $::channel :tu nuevo host es \002$vhostcheck\002"
    putserv "MODE $::channel +b $checknick"
 putserv "kick $::channel $checknick :reingrese luego, aqui no se permiten idles de nicks"
 timer $::bantimevhost [list puthelp "MODE $::channel -b $checknick"]
   }
  } else {
putserv "privmsg $::channel :\2$checknick\2 faltan parametros a su peticion, ejemplo \2!vhost soy.novato\2"
  }
}
probe el tcl y funciona de maravilla ahora tiene la opcion para quitar el ban despues de 1 minuto.
.:an ideal world:. www.geocities.ws/chateo/yo.htm
my programming place /server ix.scay.net:7005
b
bwkzb
Voice
Posts: 16
Joined: Sun Mar 12, 2017 4:26 am

Post by bwkzb »

gracias y para qué sea en 30 segundos
el timer se debe de cambiar por

utimer $::bantimevhost [list puthelp "MODE $::channel -b $checknick"]

???
User avatar
Arnold_X-P
Master
Posts: 226
Joined: Mon Oct 30, 2006 12:19 am
Location: DALnet - Trinidad - Beni - Bolivia
Contact:

Post by Arnold_X-P »

si correcto cambia en ambas lineas

Code: Select all

set bantimevhost 30
y

Code: Select all

utimer $::bantimevhost [list puthelp "MODE $::channel -b $checknick"]
en lo personal 30 segundos es muy poco y pasan volando los segundos, y tambien existen usuarios fastidiosos que trataran molestar en excesos de cambios vhost, yo lo veo bien 1 minuto, pero bueno eso lo decides tu.
.:an ideal world:. www.geocities.ws/chateo/yo.htm
my programming place /server ix.scay.net:7005
b
bwkzb
Voice
Posts: 16
Joined: Sun Mar 12, 2017 4:26 am

Post by bwkzb »

Gracias por responder
Arnold_x-p

Me gustaria agregar una linea para que solo los nick registrados puedan pedir host

Algo asi

Ej

<nickuser> !vhost host.none
<bot> lo siento no tienes el nick registrado no puedes pedir host


Algo asi recuerdo que se usa raw *307
Estuve improvisando pero me dio error xd
User avatar
Arnold_X-P
Master
Posts: 226
Joined: Mon Oct 30, 2006 12:19 am
Location: DALnet - Trinidad - Beni - Bolivia
Contact:

Post by Arnold_X-P »

ok buscare una tcl que se adecue a lo que necesita
.:an ideal world:. www.geocities.ws/chateo/yo.htm
my programming place /server ix.scay.net:7005
j
juanamores
Master
Posts: 317
Joined: Sun Mar 15, 2015 9:59 am

Post by juanamores »

bwkzb wrote: Me gustaria agregar una linea para que solo los nick registrados puedan pedir host

Algo asi

Ej

<nickuser> !vhost host.none
<bot> lo siento no tienes el nick registrado no puedes pedir host
Con el ejemplo que has puesto no se puede comprobar si el nick está o no registrado.
La comprobación se tiene que hacer sobre <nickuser> no sobre el vhost que solicita el usuario.

Si me dices con que comando se le puede hacer un INFO a un nick en la Red que tú estás, trato de ayudarte.
En la Red que estoy yo el comando es /msg NiCk info

Ejemplo:
Si pepito solicita un vhost, para saber si el nick pepito está o no registrado yo ejecuto el comando:
/msg NiCk info pepito
Y el bot NiCk me envía un privado y me confirma si está o no está registrado ese nick.
En otras redes el bot es NickServ, etc.

Luego de saber ese comando, te puedo realizar las adaptaciones para que chequee lo que tu deseas.
If you do not understand my ideas is because I can not think in English, I help me with Google Translate. I only speak Spanish. Bear with me. Thanks :)
b
bwkzb
Voice
Posts: 16
Joined: Sun Mar 12, 2017 4:26 am

Post by bwkzb »

con el comando /msg nickserv info nick se ve si el nick esta registrado o no

gracias
User avatar
Arnold_X-P
Master
Posts: 226
Joined: Mon Oct 30, 2006 12:19 am
Location: DALnet - Trinidad - Beni - Bolivia
Contact:

Post by Arnold_X-P »

juanamores a eso se referia con raw *307 el amigo bwkzbcon el raw 307 se ve eso si el nick esta o no registrado no es necesario que pida info a nick o nickserv.

ya encontre una tcl asi pero tiene muchas fallas solucionando esperen.
.:an ideal world:. www.geocities.ws/chateo/yo.htm
my programming place /server ix.scay.net:7005
j
juanamores
Master
Posts: 317
Joined: Sun Mar 15, 2015 9:59 am

Post by juanamores »

bwkzb wrote:con el comando /msg nickserv info nick se ve si el nick esta registrado o no

gracias
Ok, ya tengo todo el código terminado, sólo me falta verificar 3 datos para que te funcione en tu Red y te lo paso.

Si yo ejecuto el comando para ver un INFO de un nick en mi red, me da el siguiente dato:
A) EJEMPLO con NICK NO Registrado:

Code: Select all

/msg nick info pepitoperez
08:28 NiCK Información sobre el nick pepitoperez:
08:28 NiCK Estado: No Registrado
08:28 NiCK Fin de INFO del nick pepitoperez.
B) EJEMPLO con NICK Registrado:

Code: Select all

/msg nick info Tarzan
08:34 NiCK Información sobre el nick Tarzan:
08:34 NiCK Estado: ACTIVO
08:34 NiCK Realname: IRcap[8.72] www.ircap.net
08:34 NiCK Hora de registro: 15:24:02 21/Nov/2014 CET
08:34 NiCK Ultima hora por la red: 05:06:35 18/Mar/2017 CET (3hrs 27mins)
08:34 NiCK Fecha mínima de expiración: 06:06:35 16/Jul/2017 CEST
08:34 NiCK Ultimo mensaje de salida: Quit: &#149; IRcap &#149; 8.72 &#149;
08:34 NiCK Host Virtual: soy.el.de.la.selva
08:34 NiCK Opciones: Seguro
08:34 NiCK Fin de INFO del nick Tarzan.
C) HACIENDO WHOIS al BoT NiCK (nickserv)

Code: Select all

/whois  NiCK
08:29 _ _[ NiCK [-@-] ---o
08:29 |---> Nombre  : Servicio de nicks
08:29 |---> u-Lista?  : BOT [bots de la red irc-Hispano]
08:29 |---> Servidor : deep.space Servicios de Red
08:29 |---> +info?    : NiCK es un roBOT oficial de la Red
08:29 |---> +info?    : NiCK Utiliza los modos [Bd]
Necesito que realices las 3 tareas enumeradas con las letras A), B) y C)
y me copies los resultados.
Arnold_X-P wrote: juanamores a eso se referia con raw *307 el amigo bwkzbcon el raw 307 se ve eso si el nick esta o no registrado no es necesario que pida info a nick o nickserv.
Arnold_X-P, el sistema que uso yo en este caso concreto, no es con números RAW porque tengo otros TCL que funcionan con el mismo número RAW y luego se lanzan otros procesos que no deseo.

Yo lo hago con bases de datos temporales, alimentadas por datos que recojo del BoT NiCK (nickserv), que es quien me indica si un nick está o no registrado y funciona perfectamente también.
If you do not understand my ideas is because I can not think in English, I help me with Google Translate. I only speak Spanish. Bear with me. Thanks :)
b
bwkzb
Voice
Posts: 16
Joined: Sun Mar 12, 2017 4:26 am

Post by bwkzb »

A) nick no registrado

/ns info botayuda

-NickServ(services@servicios.host)- El nick botayuda no está registrado.

B) nick registrado

/ns info ayudabot

-NickServ(services@servicios.host)- ayudabot es bot
-NickServ(services@servicios.host)- ayudabot es un Operador de Servicios
-NickServ(services@servicios.host)- En línea desde: bot@mi.ip.host
-NickServ(services@servicios.host)- En línea desde: bot@bot.ayuda.cl
-NickServ(services@servicios.host)- Registrado: Mar 09 22:50:39 2017 EST (hace 8 días, 7 horas, 42 minutos)
-NickServ(services@servicios.host)- Último mensaje quit: xd
-NickServ(services@servicios.host)- Dirección email: mail@xxxx.cl
-NickServ(services@servicios.host)- VHost: bot.ayuda.cl
-NickServ(services@servicios.host)- Expira: Jan 12 06:33:09 2018 EST
-NickServ(services@servicios.host)- Opciones: Privado, Protección, Seguridad


C) /Whois nickserv

_[ NickServ [services@servicios.host] [desconocido] ---•
|---› Nombre  : Servicio de registro de nicks
|---› +info?    : NickServ is using modes +ioqS
|---› +info?    : NickServ is connecting from *@servicios.host
|---› Canales?: ?&@#ayudabot
|---› Servidor : servicios.host Services for IRC Networks
|---› IRCop:   : is an IRC Operator
|---› IRCop:   : is a Network Service


gracias
j
juanamores
Master
Posts: 317
Joined: Sun Mar 15, 2015 9:59 am

Post by juanamores »

Hola bwkzb, cumpliendo con lo prometido, te adapté mi script a los BoTs de la Red que usas tú.

Está SIN probar porque mi Red funciona diferente.
Ya me contarás si funciona o en caso contrario que errores te arroja.

Code: Select all

# esta parte es sencible a mayusculas o minusculas escribe bien el nombre
# de tu canal. / name of channel assistance
set channel "#vhost"
set operid "id-ircop"
set operpass "your-pass-ircop"
# tiempo de duracion del ban en minutos / bantime in minutes
set bantimevhost 1

bind evnt - init-server oper
bind pub -|- !vhost vhost
bind pub -|- .vhost vhost
bind join -|- * join

# lee mensajes privados enviados al BOT, para comparar cuando el bot NickServ envíe resultados acerca de una INFO a un nick.
bind msgm - * vhost:registro

proc oper init-server { putserv "OPER $::operid $::operpass" }
proc join {nick host handle chan } {
 if { $chan == $::channel } {
   putserv "privmsg $chan para obtener tu host tipea \2!vhost tu.host.que-quieras\2 ejemplo !vhost soy.novato \2NOTA\2: el vhost solicitado sera revisado para su aprobación"
  }
}
proc vhost {vhostnick vhosthost vhosthand vhostchan vhosttext} {
	 if { $vhostchan == $::channel } {
	 # cuando solicitan vhost consulto al bot NickServ para saber si el nick está o no registrado
	 putserv "PRIVMSG NickServ :info $vhostnick"
	 # timer de 5 segundos para darle tiempo al bot a procesar la petición
	 utimer 5 [list verarchn $vhostnick $vhosthost $vhosthand $vhostchan $vhosttext ]
	proc verarchn { vhostnick vhosthost vhosthand vhostchan vhosttext} {
	# consulta al archivo regtest para saber estado del nick, sino existe archivo se crea.
		if {![file exists regtest]} {
		set fs [open "regtest" w+]
		puts $fs 0
		close $fs
		set temp [open "regtest" r]
		set regtest [gets $temp]
		set nickregtest [lindex $regtest 0]
		close $temp
		} else { 
		set temp [open "regtest" r]
		set regtest [gets $temp]
		set nickregtest [lindex $regtest 0]
		close $temp
		}
	# comparo resultado del archivo, si es 1 nick no registrado paro el script, si es 0 nick registrado y continuo con el proceso		
		if {$nickregtest == 1} { putmsg $chan [encoding convertfrom utf-8 "Lo siento \002$vhostnick\002, no tienes el nick registrado no puedes pedir host."];return}
		if {$nickregtest == 0 } { 
		checkvhost $vhostnick $vhosttext
		}
	}
	} else {return}
}

set badwords { *<censored>* *maricon* *chupalo* *pico* *conchatumare* *admin* *adminetchat* *services* *ñ* *^* *+* *´<* *#* *ircop* *sex* *irc0p* *Opers*}
proc checkvhost { checknick vhostcheck } {
	global
		if {[string match "*.*" [string tolower $vhostcheck]]} {
		set temp 0
		set results 0
	   #$temp<=X X = number of space delimited tokens in the badwords variable.
	   while {$temp<=47} {
		 foreach x [string tolower $::badwords] {
		 if {[string match $x [string tolower $vhostcheck]]} {
		 incr results }
		}
		incr temp
	   }
	   unset temp
	   if { $results > 0 } {
	   putserv "privmsg $::channel :\2$checknick\2 Lo siento el vhost no puede ser \002$vhostcheck\002"
	   } else {
	   putserv "PRIVMSG hostserv set $checknick $vhostcheck"
	   putserv "PRIVMSG $::channel :tu vhost solicitado se ha aprobado con exito, tipea \2/hs on\2 para activarlo"
	   putserv "PRIVMSG $::channel :tu nuevo host es \002$vhostcheck\002"
		putserv "MODE $::channel +b $checknick"
	 putserv "kick $::channel $checknick :reingrese luego, aqui no se permiten idles de nicks"
	 timer $::bantimevhost [list puthelp "MODE $::channel -b $checknick"]
	   }
	  } else {
	putserv "privmsg $::channel :\2$checknick\2 faltan parametros a su peticion, ejemplo \2!vhost soy.novato\2"
	  }
}	

# proceso que se dispara cuando el bot NickServ nos envía un privado, ante una consulta del comando de mas arriba.
proc vhost:registro {nick NickServ!services@servicios.host hand text} {
# comparo en el texto enviado por privado del bot si se encuentra la frase "no está registrado", si la encuentra pone valor en archivo de 1
if {[string match -glob -ascii "*no está registrado*" $text]} {

  set fs [open "regtest" w+]
  puts $fs 1
  close $fs
  set temp [open "regtest" r]
  set regtest [gets $temp]
  set nickregtest [lindex $regtest 0]
  close $temp

  return 0
 }
 # comparo en el texto enviado por privado del bot si se encuentra la palabra textual "Registrado", si la encuentra pone valor en archivo de 0
 if {[string match -exact "*Registrado*" $text]} {

 set fs [open "regtest" w+]
  puts $fs 0
  close $fs
  set temp [open "regtest" r]
  set regtest [gets $temp]
  set nickregtest [lindex $regtest 0]
  close $temp

  return 0
}}
If you do not understand my ideas is because I can not think in English, I help me with Google Translate. I only speak Spanish. Bear with me. Thanks :)
b
bwkzb
Voice
Posts: 16
Joined: Sun Mar 12, 2017 4:26 am

Post by bwkzb »

<bot> [18:35] Tcl error in script for 'timer14':
<bot> [18:35] wrong # args: should be "global varName ?varName ...?"


gracias por responder bueno ese es el error qué me arroja
User avatar
SpiKe^^
Owner
Posts: 831
Joined: Fri May 12, 2006 10:20 pm
Location: Tennessee, USA
Contact:

Post by SpiKe^^ »

bwkzb,
Remove this entire line from the above script.

Code: Select all

   global 
SpiKe^^

Get BogusTrivia 2.06.4.7 at www.mytclscripts.com
or visit the New Tcl Acrhive at www.tclarchive.org
.
b
bwkzb
Voice
Posts: 16
Joined: Sun Mar 12, 2017 4:26 am

Post by bwkzb »

gracias por contestar spike^^

quite la linea global

ya no salia el error

pero no ejecutaba nada

cambie estas lineas

Code: Select all

putmsg $chan [encoding convertfrom utf-8 "Lo siento \002$vhostnick\002, no tienes el nick registrado no puedes pedir host."];return}
por

Code: Select all

putserv "PRIVMSG $::channel Lo siento \002$vhostnick\002, no tienes el nick registrado no puedes pedir host."
;return
}
estás lineas tambien las cambie

Code: Select all

putserv "PRIVMSG hostserv set $checknick $vhostcheck" 
putserv "PRIVMSG $::channel :tu vhost solicitado se ha aprobado con exito, tipea \2/hs on\2 para activarlo" 
      putserv "PRIVMSG $::channel :tu nuevo host es \002$vhostcheck\002" 
putserv "MODE $::channel +b $checknick" 
putserv "kick $::channel $checknick :reingrese luego, aqui no se permiten idles de nicks" 
 timer $::bantimevhost [list puthelp "MODE $::channel -b $checknick"] 
      } 
por estás

Code: Select all

putquick "PRIVMSG hostserv set $checknick $vhostcheck" 
      putserv "PRIVMSG $::channel :tu vhost solicitado se ha aprobado con exito, tipea \2/hs on\2 para activarlo" 
      putserv "PRIVMSG $::channel :tu nuevo host es \002$vhostcheck\002" 
      putquick "MODE $::channel +b $checknick" 
    putquick "kick $::channel $checknick :reingrese luego, aqui no se permiten idles de nicks" 
    timer $::bantimevhost [list puthelp "MODE $::channel -b $checknick"] 
      } 
pero no funcionaron los cambios


elimine los tildes acentos de las palabras "está" la cambie por esta "esta"

pero no hay resultados

bueno gracias por la ayuda.
Post Reply