pseudo dans un db
#1
bonjour,

je men remet à vous car je rencontre un souci sur un TCL.
en effet lors du joins du pseudo qui est enregistrer dans le .db sur un salon définie l'user est voice est si il n'est pas dans le .db il est kickban du salon.
mon souci c'est qu'il prend pas l'extension de l'user donc il refuse de le voice donc mon bot le kickban.

ex: si l'user joins le salon en pseudo|eggdrop le bot le kickban
et j'aimerais qu'il prenne le pseudo avec l'extension et les caractères \[ ]\


tcl
#  //-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//
#                        Commencement du Script TCL                 
#  //-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//

#  //-//-//-//-//-//-//- Début De la Configuration -//-//-//-//-//-//-// 
   
# Indiquer le salon 
 
set phenom(salon) "Salon"

# Indiquer ici le message de kick de la personne qui ne sera pas autoriser à entrer sur votre salon 
 
set phenom(kickmsg) "Access Non Autoriser pour ce salon ! "

# Le Systeme de Procédure lors du Joins de la personne 
 
bind join - "$::phenom(salon) *" phenomAutorisation
proc phenomAutorisation {nick uhost hand chan} {
    global botnick phenom 
			if {![acceesalon $nick]} {
			putserv "PRIVMSG $::phenom(salon) :\00314Autorisation \0034° \00314Refusé\00314 \0034°\0034"
			   putserv "KICK $chan $nick : $::phenom(kickmsg)"
				return 1
        }
          if {[acceesalon $nick]} {
		putserv "PRIVMSG $::phenom(salon) :\00314Autorisation  \00303°\00314Accepté\00303° \00314pour le salon $::phenom(salon)"
		putserv "MODE $chan +vvvv $nick"
        return 0
       }
	}

# Ne pas toucher Systeme Proc  !! 
 
proc acceesalon {nick} {
  set fa [open "Salon.db" r]
  while {![eof $fa]} {
    set get [gets $fa]
    if {![string compare [string tolower $get] [string tolower $nick]]} {
      return 1
    }
  }
  close $fo
  return 0
}

#  Céation du fichier Manquant 
 
if {![file exist Salon.db]} {
	.......
}



cordialement
Répondre Avertir
#2
bonjour,
je revient encore vers vous car je trouve toujours pas la solution à mon souci de TCL .il prend un coup sur deux le pseudo dans la data base ou alors ne prend pas en compte les caractère spéciaux [ ] ect ... puis passer 4 pseudo il accepter tout le monde qui joins le salon. :(
Répondre Avertir
#3
bonjour,

j'ai essayer de modifier
tcl
if {![acceesalon $nick]} {



par
tcl
if {[acceesalon $nick] !=-1} {



est tjrs pareille.j'trouve pas la solution est tjrs les mêmes souci que mes postes précédents

cordialement
Répondre Avertir
#4
je pourais pas t'aider j'ai pas l'habitude des trucs comme sa
Répondre
#5
Peut-être que voici une solution:
tcl
proc phenomAutorisation {nick uhost hand chan} {
   if {$nick == $::botnick} { return 0 }
   if {[acceesalon $nick]==0} {
      putserv "PRIVMSG $::phenom(salon) :\00314Autorisation \0034° \00314Refusé\00314 \0034°\0034"
      putserv "KICK $chan $nick : $::phenom(kickmsg)"
      return 1
   }
   putserv "PRIVMSG $::phenom(salon) :\00314Autorisation  \00303°\00314Accepté\00303° \00314pour le salon $::phenom(salon)"
   pushmode $chan +v $nick
   return 0
}


Là, pas la peine de mettre un else: si acceesalon retourne 0, on sort de la procédure après le kick, donc ce qui est placé ensuite n'est exécuté que si acceesalon renvoit autre chose que 0.
Note que si la personne qui entre est l'eggdrop, je stoppe le test.
tcl
proc acceesalon {nick} {
   set access 0
   set fa [open "Salon.db" r]
   while {![eof $fa]} {
      set get [gets $fa]
      if {[string first [string tolower $get] [string tolower $nick]]==0} {
         set access 1
      }
   close $fo
   return $access
}


Dans cette procédure, j'initialise une valeur de retour par défaut: 0, donc accès interdit.
Ensuite, j'utilise un string first pour voir si le nick de l'utilisateur commence par le nick entré dans le fichier, ce qui permet de ne pas se poser de question sur les [away] et autres _pasla.
Répondre
#6
merci de m'avoir répondu CrazyCat,heretoc

âpres avec tester ta version j'ai tjrs le même souci,enfin il détecte pas le pseudo dans la liste .db et kick les personne qui joins le channel.

cordialement
Répondre Avertir
#7
Hello, j'ai un tcl d'indésirable et si tu veux, je te le donnerai et tu pourra l'adapter à tes guises pour en faire ce que tu veux. Au pire MP moi pour que je te l'adapte et je le ferai en te le donnant par la suite.

Cordialement
Répondre Avertir
#8
bonjour,

merci foufou pour ta proposition,ce que j'essaye de réaliser est un TCL qui autorise des users étant dans un .db à rentrer sur un salon définie est si l'users n'est pas dans le .db il KickBan l'user. si tu as un TCL similaire j'aimerais bcp que tu me le fasse suivre. (si cela ne te dérange pas )

cordialement
Répondre Avertir
#9
Re fedora,

non cela me dérange pas si ca peut t'aider, je le ferai sans soucis (courant de l'après-midi)

Cordialement.
Répondre Avertir
#10
je viens de finir le tcl et il est prêt :)

Un ptit C/c vite fait:

toute personne qui ne seront pas dans le fichier blban.db seront exclus du salon.
Test1 c'était mon clone pour tester le tcl:

-15:40:45- » Join\ test1 - guest@3128244895.net -[1]- #test
-15:40:45- × Mode : Tchatche-Land / +b *!*@3128244895.net
-15:40:45- × Info\ Le masque *!*@3128244895.net touche : test1
-15:40:45- « Kick\ test1 kické de #test par Tchatche-Land : Vous n'êtes pas autorisé à être sur ce salon
-15:40:45- × Modes sur #test : +tn
-15:40:45-
-15:40:45- × Info\ Vous ne pouvez pas joindre le salon #test car vous êtes banni (+b)

Voila je t'ai donc argumenter le tcl si tu as des soucis, je suis pas loin ;)

Les commandes:

.+xblban <mask> <raison> (Ex: .+xblban fedora!*@* Protection) et (Ex: .+xblban fedora|*!*@* Protection) Ajoute une protection
.-xblban <mask> (Ex: .-xblban fedora!*@*) et (Ex: .-xblban fedora|*!*@*) Retire une protection
.xblban te donne la liste des protections sur le bot

Tu peux le télécharger sur http://www.tchatche-land.fr/xbadhost.tcl
Cordialement


Foufou
Répondre Avertir
#11
merci foufou pour ton aide mais j'ai toujours les même soucie que j'avais avec mon code précédemment malheureusement. il prend pas en compte les pseudo ayant les caractère [ ] ect .. après avoir aussi testé ton code lors du joins de l'user enregistrer dans le .db il ne fait aucune action (ce que je voulais) et quand j'enlève l'user de la liste et qu'il tape /hop le bot ne fait aucune action chose qu'il devrais pas faire puisque normalement il devrais le KickBan n'étant plus dans la liste . mais j'vais y travailler,'jvais bien finir par trouver la solution au problème . merci encore

cordialement
Répondre Avertir
#12
fais un .rehash et un .restart

je me pencherai plus demain sur le code et dis moi plus explicitement ce qui cloche !

Foufou
Répondre Avertir
#13
Bonjour,

le rehash et restart ont était fait est toujours pareille, que ce soit ton code ou bien le mien je retrouve toujours les mêmes soucie

- pseudo ayant des caractères du genre [ ] _- -_ sont pas détecter
- pseudo ajouter puis supprimer mais après le bot ne fait plus aucune action
- le bot ne différencie plus si l'user est autoriser à entrer sur le salon ect....
- Des Qu'il y à 4 users dans le .db ou .txt ayant des caractères [ ] _- -_ le bot accepte tous les users (même ceux qui ne sont pas dans la liste.
je commence (rire) à êtres blaser j'avoue.
J'ai essayer la lecture dans un fichier .txt au lien du .db mais idem.

[font=Times New Roman]Cordialement[/font]
Répondre Avertir
#14
Ca vient du fait que tu utilises [string compare] au lieu de [string equal].
Répondre Avertir
#15
merci Merwin pour ton aide.

je rencontre toujours le même souci passer 4 pseudo dans la liste .db le bot laisse entrer tous le monde.
Citation :|21:14:55| <Arena> ** Liste Des Nicks Autoriser **
|21:14:55| <Arena> (1) [arenaaaaa_]
|21:14:55| <Arena> (2) [oni_-]
|21:14:55| <Arena> (3) testtttttt]
|21:14:55| <Arena> (4) [[test]
|21:14:55| <Arena> ** Fin De La Liste **

Citation :|21:18:12| » Fedora |fedora@blabla-16E44443.hd.free.fr| à rejøint lë Saløn #Arena.
|21:18:13| Arena: Autorisation °Accepté° pour le salon #Arena

je suis pas dans la liste et il m'accepte sur le salon chose qu'il ne devrais pas faire étant donné que j'suis pas dans la liste.et sa idem pour d'autre pseudo avec d'autre vhost ect ...

tcl
#  //-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//
#                        Commencement du Script TCL                 
#  //-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//

#  //-//-//-//-//-//-//- Début De la Configuration -//-//-//-//-//-//-// 
   
# Indiquer le salon ou sera reporter les logs salon et Autorisation
 
set phenom(salon) "#Arena"

# Indiquer ici le message de kick de la personne qui ne sera pas autoriser à entrer sur votre salon 
 
set phenom(kickmsg) "Access Non Autoriser pour ce salon ! "

#  Céation des fichiers Manquant 
 
set fichier(pseudo) "autorise_salon.db"

#   //-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//
#          !!! NE CHANGEZ RIEN A PARTIR DE CETTE LIGNE !!!
#   //-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//

# Le Systeme de Procédure lors du Joins de la personne 
 
bind join - "$::phenom(salon) *" phenomAutorisation
proc phenomAutorisation {nick uhost hand chan} {
global botnick phenom
   if {$nick == $::botnick} { return 0 }
   if {[acceesalon [phenomfilter $nick]]==0} {
      putserv "PRIVMSG $::phenom(salon) :\00314Autorisation \0034° \00314Refusé\00314 \0034°\0034"
      putserv "KICK $chan $nick : $::phenom(kickmsg)"
      return 1
   }
   putserv "PRIVMSG $::phenom(salon) :\00314Autorisation  \00303°\00314Accepté\00303° \00314pour le salon $::phenom(salon)"
   pushmode $chan +v $nick
   return 0
}
# Ne pas toucher Systeme Proc  !!
 
proc acceesalon {nick} {
   set access 0
   set fa [open "autorise_salon.db" r]
   while {![eof $fa]} {
      set get [gets $fa]
      if {[string equal [string tolower $get] [string tolower $nick]]==0} {
         set access 1
      }
   close $fa
   return $access
}
}
 
proc phenomfilter {arg} {
	regsub -all {\\} $arg {\\\\} arg
	regsub -all {\{} $arg {\{} arg
	regsub -all {\}} $arg {\}} arg
	regsub -all {\]} $arg {\]} arg
	regsub -all {\[} $arg {\[} arg
	regsub -all {\"} $arg {\"} arg
	regsub -all {\`} $arg {\`} arg
	return $arg
}
 
#  //-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-// 
 
putlog "\002Autorise.tcl \002 chargé.... by **\002 fedora \002** "
 
 
#  //-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//
#     --------------------FIN DU FICHIER--------------------
#  //-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//-//




[font=Times New Roman]cordialement[/font]
Répondre Avertir


Atteindre :


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