Communauté Eggdrop
Soucis dans une proc - Version imprimable

+- Communauté Eggdrop (https://forum.eggdrop.fr)
+-- Forum : Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum : Scripts TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=4)
+--- Sujet : Soucis dans une proc (/showthread.php?tid=1303)



Soucis dans une proc - Asylum - 13/01/2013

Bonsoir,

Je viens poster car j ai besoin d une petite aide en ce qui concerne une proc qui permet d ajouter 3 éléments dans un fichier.
En fait, quand j'ajoute une fois un pseudo, il le met bien dans le fichier mais si je retape une seconde fois le même pseudo, il va l'ajouter dans le fichier au lieu de le bloquer.
Merci
je vous c/c ma proc :

tcl
bind pub A .+protect moderation::.+protect
proc .+protect {nick hand host chan arg} {
 variable moderation
 variable salons
 set temp [lindex $arg 0]
 
 if {$temp=="" || ![string match *@* $temp]} {
 putquick "NOTICE $nick :\2Utilisation:\2 .+protect <pseudo*!*@*> ou <*!*@host>"
 putquick "NOTICE $nick :\0034Exemple:\2 .+protect toto*!*@* ou *!*@000000.fr"
 return 0
 }
 
 set x 0
 foreach data $moderation(data) {
 if {[string match [lindex $data 0] $chan] && [string match [lindex $data 1] $arg] && [lindex $data 0]=="PROTECT" && [string tolower [lindex $data 1]]==[string tolower [lindex $arg 0]]} {
 set x 1
 }
 }
 
 if !$x {
 lappend moderation(data) "$chan PROTECT [join $temp]"
 putquick "PRIVMSG $chan :\002$temp est ajouté à la liste des protégés"
 } else {
 putquick "PRIVMSG $chan :\002 $temp est déja dans la liste des protégés"
 }
}





RE: Soucis dans une proc - djkenny - 13/01/2013

salut,

essais de remplacer ça
tcl
if {[string match [lindex $data 0] $chan] && [string match [lindex $data 1] $arg] && [lindex $data 0]=="PROTECT" && [string tolower [lindex $data 1]]==[string tolower [lindex $arg 0]]} {
 
par 
 
if {[string equal -nocase [lindex $data 0] $chan] && [string match -nocase [lindex $data 1] [lindex $arg 0]] && [lindex $data 0]=="PROTECT"} {





RE: Soucis dans une proc - Asylum - 13/01/2013

salut DjK et merci

Ca ne fonctionne pas. C est pareil ! il ajoute encore le pseudo. Vive les doublons lol Very Happy


RE: Soucis dans une proc - CrazyCat - 13/01/2013

J'ai un léger doute sur vos vérifications.
L'enregistrement donne:
tcl
lappend moderation(data) "$chan PROTECT [join $temp]"



Les tests:
tcl
[lindex $data 0]=="PROTECT"


Tiens, pour moi l'index 0 donne le chan


RE: Soucis dans une proc - djkenny - 13/01/2013

salut,

exact CrazyCat je n'avais pas fait attention

tcl
if {[string equal -nocase [lindex $data 0] $chan] && [string match -nocase [lindex $data 2] [lindex $arg 0]] && [lindex $data 1]=="PROTECT"} {





RE: Soucis dans une proc - Asylum - 09/02/2013

Bonjour,

Désolé de répondre tardivement mais pas mal occupé avec le taf donc pas eu trop le temps. Bref, tout çà pour dire que c'est bon, çà fonctionne.

Merci à vous 2


RE: Soucis dans une proc - Asylum - 16/02/2013

Bonjour,

Je reviens vers vous pour un autre petit soucis toujours dans le même tcl. En fait, lorsque je tape une commande sur un #salonX ( exmple : .+protect pseudo*!*@* , ca note bien dans la db ( #salonX PROTECT pseudo*!*@* ).
Le bot gère donc 2 salons. Dans ma db j'ai donc ( #salonX PROTECT pseudo*!*@* et #salonY PROTECT pseudo*!*@* ). Jusque là tout va bien.
Lorsque je demande à voir la liste des protégés pour le salonX, le bot me donne tous les protégés des 2 salons (#salonX #salonY).
Je vous c/c ma proc en espérant que quelqu'un pourrait m'aiguiller.
tcl
proc protectlist {nick host hand chan arg} {
 variable moderation
 variable salons
  set x 0
  set d ""
  if {[lsearch [string tolower $salons] [string tolower $chan]]==-1} {putquick "NOTICE $nick :\002Erreur:\002 $chan n'est pas un salon que je modère actuellement";return}
    foreach data $moderation(data) {
    if {[lindex $data 1]!="PROTECT"} continue
    set x 1
    lappend d [lindex $data 2]
    if {[llength $d]==10 && [lsearch [string tolower $salons] [string tolower $chan]]==1 } {
      putquick "NOTICE $nick : $chan PROTECT [join $d]"
	  set d ""
 
	}
  }
 
  if {[llength $d]>0 && [lsearch [string tolower $salons] [string tolower $chan]]==1} {
    putquick "NOTICE $nick : $chan PROTECT [join $d]" 
    set d ""
  }
  if !$x {putquick "NOTICE $nick : Liste Protect vide."}
 
}




Merci d'avance


RE: Soucis dans une proc - CrazyCat - 16/02/2013

C'est logique, tu ne vérifies jamais que la ligne contient le canal visé.
Il faut modifier:
tcl
if {[lindex $data 1]!="PROTECT"} continue


Pour en faire:
tcl
if {[string tolower [lindex $data 0]]==[string tolower $chan] && [lindex $data 1]!="PROTECT"} continue





RE: Soucis dans une proc - Asylum - 16/02/2013

Merci CrazyCat

J'ai testé ta ligne qui ne fonctionnait pas également ( j'avais toujours la même chose ). J'ai modifié la proc directement et là, çà fonctionne niquel.
Plus aucune erreur.

Cdt,