Communauté Eggdrop
User-Info by dj Kenny - 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 : User-Info by dj Kenny (/showthread.php?tid=1262)



User-Info by dj Kenny - zappeur78 - 22/10/2012

Bonsoir a tous

je souhaiterais savoir comment je pourrais modifier cette tcl afin que chaque user puisse mettre leur info line sans etre obligatoirement inscrit dans le bot voir même si cela est possible que ce soit un owner ou un coach d'un salon qui puisse le faire

Voici la tcl en question
TCL
set ::uinfo(db) "scripts/userinfo.db"
 
bind msg -|- info uinfo:set
bind join - * uinfo:join
 
proc putinfo {arg} {
  putlog "\002\[User-Info\]\002 $arg."
}
 
if ![file exists $::uinfo(db)] {
  catch {open $::uinfo(db) w} pl
  catch {close $pl}
  putinfo "Création de la base de donnée ([pwd]/$::uinfo(db))"
}
 
proc uinfo:set {nick host hand arg} {
 global uinfo
  set arg [charfilter $arg]
  set chan [string tolower [lindex $arg 0]]
  set info [lrange $arg 1 end]
  if {[string index $chan 0]!="#" && $chan!="*"} {
    putserv "NOTICE $nick :\002Syntaxe :\002 /msg $::botnick INFO <#salon> ?votre info?"
    putserv "NOTICE $nick :Mettre * à la place du salon pour une info global. Pour supprimer l'info laisser la vide."
    return 0
  }
  set x 0
  set find 0
  catch {open $uinfo(db) r} pl
  while {![eof $pl]} {
    gets $pl data
    incr x
    set data [charfilter $data]
    if {$data!=""} {
      set h [lindex $data 0]
      set c [lindex $data 1]
      if {$h==$hand && $c==$chan} {
        set find 1
        del $uinfo(db) $x
      }
    }
  }
  catch {close $pl}
  if {$info!=""} {add $uinfo(db) "$hand $chan $info"} else {set find 2}
  set c [isglobalinfo $chan]
  if {$find==0} {
    set r "a été crée" 
  } elseif {$find==1} {
    set r "a été modifiée" 
  } elseif {$find==2} {
    set r "a été supprimée" 
  }
  putserv "NOTICE $nick :Votre info $c $r."
  putinfo "\002$hand\002 ($nick) vient de [lindex $r end] son info $c"
}
 
proc uinfo:join {nick host hand chan} {
 global uinfo
  set find 0
  catch {open $uinfo(db) r} pl
  while {![eof $pl]} {
    gets $pl data
    set data [charfilter $data]
    if {$data!=""} {
      set h [lindex $data 0]
      set c [lindex $data 1]
      if {$h==$hand && ([string tolower $c]==[string tolower $chan] || $c=="*")} {
        putquick "PRIVMSG $chan :\002\[[join $h]\]\002 [join [lrange $data 2 end]]"
        set find 1
      }
    }
  }
  catch {close $pl}
  if [validuser $hand] {
    if {$find==0} {putquick "PRIVMSG $chan :\002\[[join $hand]\]\002"}
    putquick "MODE $chan -v $nick"
  }
}
 
proc isglobalinfo {chan} {
  if {$chan=="*"} {return "global"} 
  return "sur $chan"
}
 
proc del {file line} {
  set i 0
  catch {open $file r+} p
  while {![eof $p]} {
    gets $p data
    incr i
    set data [charfilter $data]
    set vecteur($i) $data
  }
  catch {close $p}
  catch {open $file w+} p
  catch {close $p}
  catch {open $file a+} p
  set u 0
  while {$u <= $i} {
    incr u
    if {$u != $line} {
      if {[info exists vecteur($u)] && $vecteur($u) != ""} {
        puts $p [join $vecteur($u)]
      }
    }
  }
  catch {close $p}
}
 
proc add {file arg} {
  set arg [charfilter [join $arg]]
  catch {open $file a+} p
  puts $p [join $arg]
  catch {close $p}
}
 
proc charfilter {arg} {
  string map {"\\" "\\\\" "\{" "\\\{" "\}" "\\\}" "\[" "\\\[" "\]" "\\\]" "\"" "\\\""} $arg
}
 
putinfo "Info-User loaded"



Merci a vous bonne soirée


RE: User-Info by dj Kenny - Supa - 25/10/2012

Il faudrait refaire le script en lui-même

Operation:
bind pub (sur salon)
<pseudo> !info <text>

(eggdrop)
- va chercher dans l'annuaire du site orange
- si pseudo == op ou coach
- on enregistre sinon on refuse.

bind join (a l'arrivé de salon)
lecture du fichier d'infoline et si <pseudo> figure dans fichier alors on envoie sur salon

Je ne vois que sa comme procédure simple personnelement


RE: User-Info by dj Kenny - pheeric - 25/10/2012

Bonjour

Je pense que sa demande est pour mettre une info line (celel que l'utilisateur voudrait mettre) sans que ce dernier ait obligatoirement un flag +v sur son bot ..

Enfin c'est comme ça que j'ai compris le message Smile

Dslé je suis pas assez grand codeur pour trouver la soluce (pourtant elle doit crever les yeux) tu as essayé le flag -|- ??


RE: User-Info by dj Kenny - Supa - 25/10/2012

Au pire zappeur détail nous ton problème encore une fois et sois plus pointilleux !


RE: User-Info by dj Kenny - zappeur78 - 25/10/2012

Bonsoir,

Alors pour être clair avec vous c'est un peu des deux c'est a dire que avec l'accord de la personne qui soit coach ou opé d'un salon que sur accueil sa apparaissent sous cette forme.

Exemple : [zappeur78] Coach du ou des salons #chan

et pour ceux qui ont des pseudos gratuit et qui désirerais mettre une info line avoir la possibilité de le faire sans être voice ni avoir d’accès sur le bot.

Voila est ce que c'est plus clair pour vous ?

Bonne soirée a tous


RE: User-Info by dj Kenny - pheeric - 25/10/2012

Reu
En fait c'est bien ce que je pensais donc Smile
Suffit juste de modifier le flag (sans pour autant aller rechercher si le pseudo est membre d'une communauté, ou coach de X ou Y salon, vu que de toutes façons sur ce tchat pourrave d'orange -désolé mais bon hein !- ça change tous les 4 matins !) v.
Donc l'utilisateur ou l'owner du bot pourra lui même rentrer les infos (oui je sais cela fait plus de taff lol).

Pour moi il s'agit bien du flag +v qui fait un barrage quelque part mais bon ça doit être facilement résolvable ...

Cordialement


RE: User-Info by dj Kenny - djkenny - 26/10/2012

salut,

en fait c'est plus subtile que ça, dans ce tcl je n'ai pas utilisé de flags, mais le hand pour reconnaitre les gens. donc un utilisateur qui n'est pas enregistré (et identifié) sur le bot ne pourra pas ajouter d'info line.
il faut donc revoir l’intégralité du code (qui de toute façon est vieux et très mal codé)
Wink


RE: User-Info by dj Kenny - aliasangelius - 26/10/2012

Faut modifié la ligne :

TCL
if [validuser $hand] {



Pour que les users puisse entrée leur infoline


RE: User-Info by dj Kenny - zappeur78 - 26/10/2012

DJ KEnny est il possible si tu a un peu de temp
que tu refasse toute le code ou que tu me donne des pistes ?
Pour la refaire

merci a tous pour vos réponse


RE: User-Info by dj Kenny - djkenny - 27/10/2012

se serait effectivement possible si je codais encore Smile


RE: User-Info by dj Kenny - aliasangelius - 29/10/2012

Salut,

Test comme sa voir

TCL
set ::uinfo(db) "scripts/userinfo.db"
 
bind msg - info uinfo:set
bind join - * uinfo:join
 
proc putinfo {arg} {
  putlog "\002\[User-Info\]\002 $arg."
}
 
if ![file exists $::uinfo(db)] {
  catch {open $::uinfo(db) w} pl
  catch {close $pl}
  putinfo "Création de la base de donnée ([pwd]/$::uinfo(db))"
}
 
proc uinfo:set {nick host hand arg} {
 global uinfo
  set arg [charfilter $arg]
  set chan [string tolower [lindex $arg 0]]
  set info [lrange $arg 1 end]
  if {[string index $chan 0]!="#" && $chan!="*"} {
    putserv "NOTICE $nick :\002Syntaxe :\002 /msg $::botnick INFO <#salon> ?votre info?"
    putserv "NOTICE $nick :Mettre * à la place du salon pour une info global. Pour supprimer l'info laisser la vide."
    return 0
  }
  set x 0
  set find 0
  catch {open $uinfo(db) r} pl
  while {![eof $pl]} {
    gets $pl data
    incr x
    set data [charfilter $data]
    if {$data!=""} {
      set h [lindex $data 0]
      set c [lindex $data 1]
      if {$h==$nick && $c==$chan} {
        set find 1
        del $uinfo(db) $x
      }
    }
  }
  catch {close $pl}
  if {$info!=""} {add $uinfo(db) "$hand $chan $info"} else {set find 2}
  set c [isglobalinfo $chan]
  if {$find==0} {
    set r "a été crée" 
  } elseif {$find==1} {
    set r "a été modifiée" 
  } elseif {$find==2} {
    set r "a été supprimée" 
  }
  putserv "NOTICE $nick :Votre info $c $r."
  putinfo "\002$nick\002 ($nick) vien de [lindex $r end] son info $c"
}
 
proc uinfo:join {nick host hand chan} {
 global uinfo
  set find 0
  catch {open $uinfo(db) r} pl
  while {![eof $pl]} {
    gets $pl data
    set data [charfilter $data]
    if {$data!=""} {
      set h [lindex $data 0]
      set c [lindex $data 1]
      if {$h==$hand && ([string tolower $c]==[string tolower $chan] || $c=="*")} {
        putquick "PRIVMSG $chan :\002\[[join $nick]\]\002 [join [lrange $data 2 end]]"
        set find 1
      }
    }
  }
  catch {close $pl}
  if [matchattr $nick ""] {
    if {$find==0} {putquick "PRIVMSG $chan :\002\[[join $nick]\]\002"}
    putquick "MODE $chan -v $nick"
  }
}
 
proc isglobalinfo {chan} {
  if {$chan=="*"} {return "global"} 
  return "sur $chan"
}
 
proc del {file line} {
  set i 0
  catch {open $file r+} p
  while {![eof $p]} {
    gets $p data
    incr i
    set data [charfilter $data]
    set vecteur($i) $data
  }
  catch {close $p}
  catch {open $file w+} p
  catch {close $p}
  catch {open $file a+} p
  set u 0
  while {$u <= $i} {
    incr u
    if {$u != $line} {
      if {[info exists vecteur($u)] && $vecteur($u) != ""} {
        puts $p [join $vecteur($u)]
      }
    }
  }
  catch {close $p}
}
 
proc add {file arg} {
  set arg [charfilter [join $arg]]
  catch {open $file a+} p
  puts $p [join $arg]
  catch {close $p}
}
 
proc charfilter {arg} {
  string map {"\\" "\\\\" "\{" "\\\{" "\}" "\\\}" "\[" "\\\[" "\]" "\\\]" "\"" "\\\""} $arg
}
 
putinfo "Par Dj_KennY"