Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


[Résolu] problème de timer sur un unban
#1
Bonjour à tous :)

Donc voila je souhaite rajouter un timer sur des commandes de ban pour unban automatiquement au bout de x minutes (il est volontairement réglé a 1 minutes pour faire les test)
Voici le code modifier :

tcl
set cs "ChanServ"
set chanlog "#Services"
set unban(time) "1"
set exemptreason "\002\0034!! ERROR 404 COMMAND NOT FOUND !! \0037Pseudo protété \00312Commande NOT FOUND"
set vhostexempt {
 *Root@domain.tld
 *@TechAdmin.domain.tld
*@le.reste.des.vhost
}
bind pub m !br banraison
proc banraison { nick host hand channel text } {
 global cs chanlog vhostexempt exemptreason unban
 set args [split $text]
 set victim [lindex $args 0]
 set reason [join [lrange $args 1 end]]
 if { ![onchan $victim $channel] } {
   putserv "PRIVMSG $channel :\0034$victim \00312n'est pas là \0037$nick"
return 0
 }
 set vichost [getchanhost $victim $channel]
 set protec 0
 foreach vhost $vhostexempt {
if { [string match -nocase $vhost $vichost] } {
 set protec 1
}
 }
 if { $protec == 1 } {
   putserv "NOTICE $nick :$exemptreason"
   } else {
   putserv "PRIVMSG $cs ban $channel $victim $reason"
   putserv "PRIVMSG $chanlog :\0034$victim \00312a été bannie de \0034$channel \00312par \0034$nick \00312pour la raison :\0037 $reason"
   timer $unban(time) "PRIVMSG $cs unban $channel -b $victim"
 }
}

La commande fonctionne très bien aucun souci à se niveau le problème intervient au moment du unban voila le message d'erreur

Code:
[18:38:00]Tcl error in script for 'timer73':
[18:38:00]invalid command name 'PRIVMSG'
J'ai aussi tenter en remplacent ma commande par 'mode -b ...' mais le message reste le même.
Comment puis-je résoudre se problème ?
Et aussi si par exemple je ban 2 users a 10 minutes d'intervalle le unban se fera aussi a 10 minutes d'intervalle ou les 2 en même temps ?
Oui je veux que sa unban à intervalle
Espérant avoir été assez clair.

Bien à vous.

Bye.
#2
Il manque peut-être un putserv ?
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#3
Bonsoir,

Donc j'ai tenter plusieurs façon mais rien ne fonctionne

tcl
timer $unban(time) "putserv PRIVMSG $cs unban $channel -b $victim"
ou
timer $unban(time) putserv "PRIVMSG $cs unban $channel -b $victim"
ou
putserv timer $unban(time) "PRIVMSG $cs unban $channel -b $victim"


Code:
1er test:
[19:41:00] Tcl error in script for 'timer81':
[19:41:00] wrong # args: should be "putserv text ?mode?"

2eme test:
[19:43:00] Tcl error in script for 'timer81':
[19:43:00] wrong # args: should be "putserv text ?mode?"

3eme test:
[19:45:00] Tcl error in script for 'timer81':
[19:45:00] wrong # args: should be "putserv text ?mode?"
Je ne comprend pas comment insérer le putserv...
#4
Je te laisse jeter un oeil sur Timers - Utimers qui t'explique la syntaxe logique:

tcl
timer <minutes> <proc_a_lancer>


Dans ton cas, tu devrais faire:

tcl
timer $unban(time) [list putserv "PRIVMSG $cs :unban $channel -b $victim"]

zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#5
Bonsoir, j'ai modifier comme conseillé mais cela ne fonctionne pas

tcl
proc banraison { nick host hand channel text } {
  global cs chanlog exempt unban
  set args [split $text]
  set victim [lindex $args 0]
  set reason [join [lrange $args 1 end]]
  if { ![onchan $victim $channel] } {
    putserv "PRIVMSG $channel :\0034$victim \00312n'est pas là \0037$nick"
	return 0
  }
  set vichost [getchanhost $victim $channel]
  set protec 0
  foreach vhost $exempt(vhost) {
	if { [string match -nocase $vhost $vichost] } {
	  set protec 1
	}
  }
  if { $protec == 1 } {
    putserv "NOTICE $nick :$exempt(reason)"
    } else {
    putserv "PRIVMSG $cs ban $channel $victim $reason"
    putserv "PRIVMSG $chanlog :\0034$victim \00312a été bannie de \0034$channel \00312par \0034$nick \00312pour la raison :\0037 $reason"
    timer $unban(time) [list putserv "PRIVMSG $cs :unban $channel -b $victim"]
  }
}

plus de message d'erreur a propos du timer par contre a priori il unban eggdrop à la place de l'user.

Code:
[05:31:00] -ChanServ (Service@EnjOy-TchaT.fr)- Vous avez été débanni de #TesT.
Donc ceux qui me laisse pensé que pour le unban il ne prend pas en compte la variable "$victim"
Comment faire ?

EDIT :
Pas étonnant que cela ne fonctionne pas puisque la commande n'est pas bonne...
j'ai donc modifier par

tcl
timer $unban(time) [list putserv "mode $channel -b $victim"]

La je n'ai plus aucun message d'erreur en PL par contre sa ne unban toujours pas...
j'ai aussi tenté en remplacent "$victim" par "$host" mais même constat.
Donc comment faire pour que mon unban fonctonne ?
Merci d'avance.

Bye.
#6
En regardant le ban que mets chanserv ?
Le mieux est peut-être que tu maitrises complètement le ban, donc que l'eggdrop le pose lui-même au lieu de passer par chanserv et qu'il le retire lui-même.
En plus, le jour où les services sont en panne, ça continue à fonctionner.
zeolia: tchat gratuit, sans inscription ni publicité
Merci de ne pas demander d'aide en MP
Away
#7
Problème résolue avec le upgrade vers anope 2.0.X
Encore merci :)

Bye.


Possibly Related Threads…
Thread Author Replies Views Last Post
  timer KeeViiNou 1 1,341 20/08/2020, 18:19
Last Post: CrazyCat
  Création d'un script d'unban Demonis 9 6,517 17/03/2013, 22:18
Last Post: Demonis
  Unban Niubot.. aliasangelius 4 5,138 13/11/2012, 09:58
Last Post: aliasangelius
  Timer TCL BlackNight 15 15,807 13/02/2010, 19:42
Last Post: DodY
  timer ban Marc 9 5,540 22/12/2009, 12:10
Last Post: CrazyCat
  Timer en Tcl Meribre 4 5,125 17/12/2009, 17:53
Last Post: Meribre
  Eggdrop, qui unban automatiquement... IluZi0n 4 4,832 16/04/2009, 14:52
Last Post: David
  erreur dans un timer caline012 2 4,841 17/10/2008, 13:52
Last Post: caline012
  unban apres x temps pepino 0 4,266 16/08/2008, 22:00
Last Post: pepino

Forum Jump:


Users browsing this thread: 1 Guest(s)