une v3.
#1
Bonjour,

Voila je post car je vais bientôt commencer la V3 de mon Gestion.Bot.
Avec plus de fonctions et le remaniement total du code.
Avec aussi beaucoup de modifications dans la globalité du code qui et parus sur le forum.

Ensuite je me servirais de ce post ici pour faire appel à des personnes désirant tester les versions bêta du code au fur et à mesure celons la progression.

Bien sur cela sera assez long car le temps et manquant de temps en temps et aussi certaines connaissance.
Je ferais aussi de ce post des demandes d'aides passible de m'aider lorsque je serais dans le brouillard.

Voila si des questions ou autre je suis la Smile.

Donc première aide que j'aimerais que ont m'explique.

Je suis sur le traitement de fichier actuellement.
Et donc je désire faire dans un fichier db ou autre ceci :
pseudo,salon,level,pass
Jusque la aucun problème.
Mais mon soucis et comment repéré le "level" qui correspondrait à 200 dans le fichier.
Ceci lors d'une commande tapez sur salon une vérification soit effectué et que sa regarde dans le fichier si la personne à le level 200 il autorise sinon elle refuse.

Je ne vois pas comment faire.
Répondre Avertir
#2
C'est très simple, il y a un exemple qui a été donné sur ce post
TCL
bind msg - auth mon:auth
 
proc mon:auth {nick host hand arg} {
    variable authed ;#on déclare la variable qui contiendra les utilisateurs identifié
 
    #on ouvre le fichier et récupère les données qui sont dedans
    set a [open users.db]
    set users [split [read $a] "\n"]
    close $a
    #les données sont contenues dans $users
 
    set salon [lindex $arg 0]
    set pseudo [lindex $arg 1]
    set pass [lindex $arg 2]
    foreach u $users {
        set c [lindex $u 0]
        #on verifi que le salon correspond au salon contenue dans la ligne du fichier, sinon on saute a la boucle suivante
        if ![string equal -nocase $c $salon] continue
        #on controle si le pseudo correspond, sinon on saute la boucle suivante
        set ps [lindex $u 1]
        if ![string equal -nocase $ps $pseudo] continue
        #on vérifie si le mot de passe correspond
        set pa [lindex $u 2]
         if ![string equal $pa $pass] continue
        #pour finir on teste le host
        set h [lindex $u 4]
        if ![string match -nocase $h "$nick!$host"] continue
        #arrivé la l utilisateur a remplis toutes les conditions pour s identifier donc on va le retenir
        set level [lindex $u 3]
        set authed($nick,$salon) $level
        putserv "NOTICE $nick :Vous êtes identifié sur le salon $salon"
        # et on fini la procédure
        return
    }
    #sinon arrivé la l utilisateur n'as pas d'accès donc on lui dit
    putserv "NOTICE $nick :Vous n'avez pas d'accès"
}


Et la variable $::authed(machin,#bidule) contient le level de machin sur #bidule.
Donc, sitôt qu'une personne est authentifiée sur un salon, tu as son level.
Répondre
#3
CrazyCat a écrit :Et la variable $::authed(machin,#bidule) contient le level de machin sur #bidule.
Donc, sitôt qu'une personne est authentifiée sur un salon, tu as son level.
authed n'est pas une variable global donc attention aux :: qui pourais causer une erreur
C'est en reconnaissant ses erreurs que l'on progresse Wink
Répondre Avertir
#4
Tu aurais pu la mettre globale, si tu crois que je regarde à fond ta proécédure Very Happy
Note que j'ai corrigé ton $chan par $salon, j'avais bien suivi sur l'autre post !
Répondre
#5
ba en fait j essais d utiliser de moins en moins les globals, je trouves ça inutile est assez embêtant à gérer surtout dans le cas ou tu aurais plusieurs variables qui doivent porter le même nom, on se retrouves vite avec des noms de variables à rallonge
C'est en reconnaissant ses erreurs que l'on progresse Wink
Répondre Avertir
#6
Salut,

Oui j'ai vus l'exemple donner sur l'autre post.

Mais comme j'ai dit sur ton server irc ce week-end et sur le post je vais essayé de faire quelque chose pour expliqué comment je vois la chose.
Répondre Avertir


Atteindre :


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