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

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.
Répondre Avertir
#2
Il manque peut-être un putserv ?
Répondre
#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...
Répondre Avertir
#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"]


Répondre
#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.
Répondre Avertir
#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.
Répondre
#7
Problème résolue avec le upgrade vers anope 2.0.X
Encore merci Smile

Bye.
Répondre Avertir


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté