09/07/2018, 12:22
(Modification du message : 09/07/2018, 12:24 par aliasangelius.)
Salut,
si c'est pour un salon, j'avais fait un truc pour quelqu'un ya un moment de ça.
Mais c'est par traitement de fichier, si ça peut t'aider tiens :
EDIT : J'devais modifié pour faire passer les messages en msgcat, mais j'ai eut un poil la flemme, mais tu à de quoi faire pour ton exemple je suppose.
si c'est pour un salon, j'avais fait un truc pour quelqu'un ya un moment de ça.
Mais c'est par traitement de fichier, si ça peut t'aider tiens :
tcl
#**********#
# Vip V1.0 #
#**********#
# Description du code TCL.
#***************************************#
# TCL en NameSpace. #
# Utilisation de msgcat. #
#***************************************#
namespace eval ::vip {
# Salon back ou va se situé l'autorise.
variable salons "#informatique"
# Nom du fichier ou seront les pseudos autorisé.
variable fichiers "vip.db"
# Procédure de création du fichier Vip.
if {![file exists $fichiers]} {
set load [open $fichiers w+]
close $load
putlog "\2Je crée le fichier $fichiers\2"
}
proc filtout {chan text} {
if [string match "*c*" [getchanmode $chan]] {
return [stripcodes abcgru $text]
} else {
return $text
}
}
# Procédure de join.
bind join - "$::vip::salons *" [namespace current]::joinauto
proc joinauto {nick host hand chan} {
variable salons
if [isbotnick $nick] return
if {[acceesalon $nick]} {
set msg [filtout $salons "\0031\[ \0033Mode Vip Automatique\0033 \0031\] Comportement exemplaire récompensé pour \002$nick\002 qui est automatiquement VIP ce mois ci sur \002$salons\002"]
putquick "PRIVMSG $salons :$msg"
putserv "MODE $salons +v $nick"
return 0
}
}
# Procédure d'ajout de pseudo Vip.
bind pub o ".+vip" [namespace current]::+ajout
proc +ajout { nick host hand chan arg } {
variable fichiers
variable salons
set temp [lindex $arg 0]
if {$temp == ""} {
putserv "NOTICE $nick :Utilisation: .+vip <pseudo>"
putserv "NOTICE $nick :Exemple .+vip $nick"
return 0
}
set lis "[fread $fichiers]"
if {[lsearch -exact "x $fichiers" "$temp"]!="0"} {
lappend lis $temp
fwrite $fichiers $temp
putserv "NOTICE $nick :\002$temp\002 \0034a été ajouté\0034"
putserv "NOTICE $nick :\002$temp\002 \0034est ajouté au pseudos vip\0034"
return 0
}
putserv "NOTICE $nick :\002Erreur:\002$temp\002 \0034est déjà vip\0034"
return 0
}
# Procédure de suppression de pseudo vip.
bind pub o ".-vip" [namespace current]::-ajout
proc -ajout { nick host hand chan arg } {
variable fichiers
variable salons
set temp [lindex $arg 0]
if {$temp == ""} {
putserv "NOTICE $nick :Utilisation: .-vip <pseudo>"
putserv "NOTICE $nick :Exemple: .-vip $nick"
return 0
}
set autoajout "[fread $fichiers]"
set tmp ""
foreach bb $autoajout {
if {![string match $temp $bb]} {lappend tmp $bb}
}
fdel $fichiers $tmp
putserv "NOTICE $nick :\002$temp\002 \0034supprimé des vip\0034"
putserv "NOTICE $nick :\002$temp\002 \0034est supprimé des pseudo vip\0034"
return 0
}
# Procédure pour voir la liste des vip.
bind pub o ".vip" [namespace current]::auto
proc auto { nick host hand chan arg } {
variable fichiers
variable salons
set fp [open $fichiers "r"]
set fc -1
putserv "notice $nick :\037\00300,01 -> Liste des vip. <-\037\003"
while {![eof $fp]} {
set data [gets $fp]
incr fc
if {$data !=""} {
putserv "notice $nick :\0031\[ \0034$data\0031\0031 ]\0031"
}
unset data
}
close $fp
putserv "notice $nick :\037\00300,01 -> Fin de la liste des vip. <-\037\003"
}
# Ne pas toucher Systeme Proc !!
proc acceesalon {nick} {
variable fichiers
set fa [open $fichiers r]
set access 0
while { ![eof $fa]} {
set ligne [gets $fa]
if {[string tolower $nick] == [string tolower $ligne]} {
set access 1
}
}
close $fa
return $access
}
# Procédure d'écriture de fichier.
proc fwrite {fi arg} {
set f [open $fi a]
puts $f $arg
close $f
}
# Procédure de suppression de fichier.
proc fdel {fi arg} {
set f [open $fi w]
puts $f $arg
close $f
}
# Procédure de lecture de fichier.
proc fread {fi} {
set f [open $fi r]
set t [gets $f]
close $f
return $t
}
}
putlog "\002\0034Chargement.. \002\037\0031Vip.tcl\037\0031"
EDIT : J'devais modifié pour faire passer les messages en msgcat, mais j'ai eut un poil la flemme, mais tu à de quoi faire pour ton exemple je suppose.