######################### ## .promo bind dcc CG promo dcc_promo proc dcc_promo {hand idx args} { set args [lindex $args 0] if {$args == ""} { putdccsi $idx "# Syntaxe: .promo <+|-> \[membre\]" putdccsi $idx " Les options 'admcan' et 'admproj' sont restreintes aux admins généraux." return 0 } set choix [string tolower [lindex $args 0]] set nick [lindex $args 1] if {[string range $choix 1 3] == "adm"} { if {![matchattr $hand G] || [matchattr $nick G]} { putdccsi $idx "Hey, à quoi tu rêves toi là?" putdccsi $idx "Tu penses vraiment que tu peux faire ça ? Non mais, pas fou rien qu'un peu toi..." putdccsi $idx "Que je ne t'y reprenne plus!, compris! ;-p" return 0 } } if {[string index $choix 0] == "-"} { set choix [string range $choix 1 end] } if ![validuser $nick] { putdccsi $idx "Ce n'est pas un nom de membre valable." return 0 } if [matchattr $nick H] { putdccsi $idx "Avant de reprendre du service actif, le membre honoraire doit abandonner ce titre." return 0 } if ![matchattr $nick ACTGOJKMRP] { putdccsi $idx "Cette personne ne peut pas recevoir de promotion / perdre d'accès, la configuration actuel de son accès ne le permet pas." return 0 } switch $choix { "+admcan" { if [matchattr $nick A] { putdccsi $idx "Hum? Ben il est déjà admin lui là!" return 0 } if ![matchattr $nick O] { putdccsi $idx "Hum? Ben il devrait être op avant de pouvoir devenir admin canal!!" return 0 } chattr $nick +ACE+JM chattr $nick -|+m #Aide chattr $nick -|+of #Cours chattr $nick -|+m #Concil chattr $nick -|+m &general setuser $nick xtra prom [unixtime] setuser $nick xtra futur setuser $nick xtra dejaop oui setuser $nick xtra presenceop 1 setuser $nick xtra quotavote 4 modaccesw $nick 400 modacceswcours $nick 395 putdccsi $idx "Voilà, $nick est maintenant Admin Canal dans l'équipe de #Aide!" putdccsi [hand2idx $nick] "*** Boum badabim, tu es maintenant admin canal ***" return 1 } "admcan" { if ![matchattr $nick C] { putdccsi $idx "Hum? Ben il ne l'est pas non plus!" return 0 } chattr $nick -JACOE+M chattr $nick -|-mof #Aide chattr $nick -|-mof #Cours chattr $nick -|-mof #Concil chattr $nick -|-mof &general modaccesw $nick 0 modacceswcours $nick 0 putdccsi $idx "Voilà, $nick n'est maintenant plus Admin Canal dans l'équipe de #Aide!" putdccsi [hand2idx $nick] "*** PAF! Tu n'est plus admin canal ***" return 1 } "+admproj" { if [matchattr $nick A] { putdccsi $idx "Hum? Ben il est déjà admin lui là!" return 0 } if ![matchattr $nick RPE] { putdccsi $idx "Hum? Ben il devrait être participant à au moins un projet avant de pouvoir devenir admin projet!!!" return 0 } chattr $nick +ATE-JM chattr $nick -|+m &projets chattr $nick -|+fo #Aide chattr $nick -|+fo #Cours chattr $nick -|+m #Concil chattr $nick -|+m &general setuser $nick xtra prom [unixtime] setuser $nick xtra futur setuser $nick xtra dejaop oui setuser $nick xtra presenceop setuser $nick xtra quotavote 4 modaccesw $nick 395 modacceswcours $nick 400 putdccsi $idx "Voilà, $nick est maintenant Admin Projets dans l'équipe de #Aide!" putdccsi [hand2idx $nick] "*** Boum badabim, tu es maintenant admin projets ***" return 1 } "admproj" { if ![matchattr $nick T] { putdccsi $idx "Hum? Ben il ne l'est pas non plus!" return 0 } chattr $nick -ATOJE+M chattr $nick -|-mof #Aide chattr $nick -|-mof #Cours chattr $nick -|-mof #Concil chattr $nick -|-mof &general modaccesw $nick 0 modacceswcours $nick 0 putdccsi $idx "Voilà, $nick n'est maintenant plus Admin Projets dans l'équipe de #Aide!" putdccsi [hand2idx $nick] "*** PAF! Tu n'est plus admin projets ***" return 1 } "+op" { if [matchattr $nick A] { putdccsi $idx "Hum? Ben il est déjà admin lui là!" return 0 } chattr $nick -JM+O chattr $nick -|+fo #Aide setuser $nick xtra prom [unixtime] setuser $nick xtra futur setuser $nick xtra dejaop oui if {([getuser $nick xtra presenceop] == "") | ([getuser $nick xtra presenceop] < 1)} { setuser $nick xtra presenceop 1 } if {([getuser $nick xtra quotavote] == "") | ([getuser $nick xtra quotavote] < 1)} { setuser $nick xtra quotavote 6 } modaccesw $nick 200 putdccsi $idx "Voilà, $nick est maintenant Opérateur dans l'équipe de #Aide!" putdccsi [hand2idx $nick] "*** Boum badabim, tu es maintenant Opérateur sur #Aide ***" return 1 } "op" { if ![matchattr $nick O] { putdccsi $idx "Hum? Ben il ne l'est pas non plus!" return 0 } if [matchattr $nick A] { putdccsi $idx "Hum? Ben là il s'agit d'un admin!" return 0 } chattr $nick -OJ chattr $nick +M chattr $nick -|-mof #Aide modaccesw $nick 25 putdccsi $idx "Voilà, $nick n'est maintenant plus Opérateur dans l'équipe de #Aide!" putdccsi [hand2idx $nick] "*** PAF! Tu n'est plus Opérateur sur #Aide ***" return 1 } "+opa" { if [matchattr $nick A] { putdccsi $idx "Hum? Ben il est déjà admin lui là!" return 0 } if [matchattr $nick O] { putdccsi $idx "Hum? Ben il est déjà op lui là!" return 0 } if [matchattr $nick J] { putdccsi $idx "Hum? Ben il l'est déjà op adjoint!" return 0 } chattr $nick -M chattr $nick +J chattr $nick -|+f #Aide setuser $nick xtra prom [unixtime] setuser $nick xtra futur if {!([getuser $nick xtra presenceop] > 0)} { setuser $nick xtra presenceop 1 } if {!([getuser $nick xtra quotavote] > 0)} { setuser $nick xtra quotavote 6 } modaccesw $nick 75 putdccsi $idx "Voilà, $nick est maintenant Opérateur Adjoint dans l'équipe de #Aide!" putdccsi [hand2idx $nick] "*** Boum badabim, tu es maintenant Opérateur Adjoint sur #Aide ***" return 1 } "opa" { if ![matchattr $nick J] { putdccsi $idx "Hum? Ben il ne l'est pas non plus!" return 0 } chattr $nick -J+M if ![matchattr $nick RPE] { chattr $nick +M } chattr $nick -|-mof #Aide modaccesw $nick 25 putdccsi $idx "Voilà, $nick n'est maintenant plus Opérateur Adjoint dans l'équipe de #Aide!" putdccsi [hand2idx $nick] "*** PAF! Tu n'es plus Opérateur Adjoint sur #Aide ***" return 1 } default { putdccsi $idx "Cette option n'est pas valide ..." return 0 } } } ######################## ## .projet / .projets bind dcc GT projet dcc_projet proc dcc_projet {hand idx args} { set args [lindex $args 0] if {$args == ""} { putdccsi $idx "# Syntaxe: .projet <+|-> \[membre\] " return 0 } set choix [string tolower [lindex $args 0]] if {[string index $choix 0] == "-"} { set choix [string range $choix 1 end] } set nick [lindex $args 1] if [validuser $nick] { if [matchattr $nick H] { putdccsi $idx "Avant de reprendre du service actif, le membre honoraire doit abandonner ce titre." return 0 } if ![matchattr $nick ACTGOJKMRP] { putdccsi $idx "Cette personne ne peut pas recevoir /perdre de tâche sur un projet, la configuration actuel de son accès ne le permet pas." return 0 } set projet [lrange $args 2 end] } else { set projet [lrange $args 1 end] } switch $choix { "+proj" { set oki 1 set nouvliste "" foreach item [getuser AideBot xtra projets] { if {[string tolower $item] == [string tolower $projet]} { set oki 0 } else { lappend nouvliste $item } } lappend nouvliste $projet setuser AideBot xtra projets $nouvliste if $oki { putdccsi $idx "Oki, le projet '$projet' a été ajouté à la liste des projets actifs." return 1 } else { putdccsi $idx "Le projet '$projet' était déjà dans la liste." return 0 } } "proj" { set oki 0 set nouvliste "" foreach item [getuser AideBot xtra projets] { if {[string tolower $item] == [string tolower $projet]} { set oki 1 } else { lappend nouvliste $item } } if $oki { foreach user [userlist RP] { foreach item "[getuser $user xtra responsable] [getuser $user xtra participant]" { if {[string tolower $projet] == [string tolower $item]} { putdccsi $idx "Oups! Il y a encore des participants et/ou responsables de ce projet... Je ne peux pas l'effacer dans ces conditions!" return 0 } } } setuser AideBot xtra projets $nouvliste putdccsi $idx "Oki, le projet '$projet' a été retiré de la liste." return 1 } else { putdccsi $idx "J'ai bien peur que ce projet ne figure pas dans ma liste..." return 0 } } "+resp" { if ![string match *[string tolower $projet]* [string tolower [getuser AideBot xtra projets]]] { putdccsi $idx "Heu, ce projet ne fait pas partie de la liste des projets actifs apparament." return 0 } if [string match *[string tolower $projet]* [string tolower [getuser $nick xtra participant]]] { putdccsi $idx "Heu, ne peut à la fois être participant et responsable du projet." return 0 } if [string match *[string tolower $projet]* [string tolower [getuser $nick xtra adjoint]]] { putdccsi $idx "Heu, ne peut à la fois être participant et adjoint du projet." return 0 } set oki 1 set nouvliste "" foreach item [getuser $nick xtra responsable] { if {[string tolower $item] == [string tolower $projet]} { set oki 0 } else { lappend nouvliste $item } } lappend nouvliste $projet setuser $nick xtra responsable $nouvliste if $oki { putdccsi $idx "Oki, le projet '$projet' a maintenant $nick comme responsable" chattr $nick +R chattr $nick -|+o &Projets return 1 } else { putdccsi $idx "Apparament, $nick était déjà responsable de '$projet'." return 0 } } "resp" { set oki 0 set nouvliste "" foreach item [getuser $nick xtra responsable] { if {[string tolower $item] == [string tolower $projet]} { set oki 1 } else { lappend nouvliste $item } } setuser $nick xtra responsable $nouvliste if $oki { putdccsi $idx "Oki, le projet '$projet' n'est plus sous la responsabilité de $nick" if {$nouvliste == ""} { chattr $nick -R chattr $nick -|-o &Projets } if ![matchattr $nick RPAOJHE] { chattr $nick +M } return 1 } else { putdccsi $idx "Apparament, $nick n'était déjà pas responsable de '$projet'." return 0 } } "+adj" { if ![string match *[string tolower $projet]* [string tolower [getuser AideBot xtra projets]]] { putdccsi $idx "Heu, ce projet ne fait pas partie de la liste des projets actifs apparament." return 0 } if [string match *[string tolower $projet]* [string tolower [getuser $nick xtra responsable]]] { putdccsi $idx "Heu, ne peut à la fois être adjoint et responsable du projet." return 0 } if [string match *[string tolower $projet]* [string tolower [getuser $nick xtra participant]]] { putdccsi $idx "Heu, ne peut à la fois être participant et adjoint du projet." return 0 } set oki 1 set nouvliste "" foreach item [getuser $nick xtra adjoint] { if {[string tolower $item] == [string tolower $projet]} { set oki 0 } else { lappend nouvliste $item } } lappend nouvliste $projet setuser $nick xtra adjoint $nouvliste if $oki { putdccsi $idx "Oki, le projet '$projet' a maintenant $nick comme adjoint-responsable" chattr $nick +P return 1 } else { putdccsi $idx "Apparament, $nick était déjà adjoint-responsable de '$projet'." return 0 } } "adj" { set oki 0 set nouvliste "" foreach item [getuser $nick xtra adjoint] { if {[string tolower $item] == [string tolower $projet]} { set oki 1 } else { lappend nouvliste $item } } setuser $nick xtra adjoint $nouvliste if $oki { putdccsi $idx "Oki, $nick n'est plus adjoint-responsable de '$projet'." if {($nouvliste == "")&([getuser $nick xtra participant] == "")} { chattr $nick -P } if ![matchattr $nick RPAOJHE] { chattr $nick +M } return 1 } else { putdccsi $idx "Apparament, $nick n'était déjà pas adjoint-responsable de '$projet'." return 0 } } "+part" { if ![string match *[string tolower $projet]* [string tolower [getuser AideBot xtra projets]]] { putdccsi $idx "Heu, ce projet ne fait pas partie de la liste des projets actifs apparament." return 0 } if [string match *[string tolower $projet]* [string tolower [getuser $nick xtra responsable]]] { putdccsi $idx "Heu, ne peut à la fois être participant et responsable du projet." return 0 } if [string match *[string tolower $projet]* [string tolower [getuser $nick xtra adjoint]]] { putdccsi $idx "Heu, ne peut à la fois être participant et adjoint du projet." return 0 } set oki 1 set nouvliste "" foreach item [getuser $nick xtra participant] { if {[string tolower $item] == [string tolower $projet]} { set oki 0 } else { lappend nouvliste $item } } lappend nouvliste $projet setuser $nick xtra participant $nouvliste if $oki { putdccsi $idx "Oki, $nick est maintenant officiellement participant au projet '$projet'." chattr $nick +P return 1 } else { putdccsi $idx "Apparament, $nick était déjà participant à '$projet'." return 0 } } "part" { set oki 0 set nouvliste "" foreach item [getuser $nick xtra participant] { if {[string tolower $item] == [string tolower $projet]} { set oki 1 } else { lappend nouvliste $item } } setuser $nick xtra participant $nouvliste if $oki { putdccsi $idx "Oki, $nick n'est plus participant au projet '$projet'." if {($nouvliste == "")&([getuser $nick xtra adjoint] == "")} { chattr $nick -P } if ![matchattr $nick RPAOJHE] { chattr $nick +M } return 1 } else { putdccsi $idx "Apparament, $nick ne faisait déjà pas partie de '$projet'." return 0 } } "+admin" { if ![string match *[string tolower $projet]* [string tolower [getuser AideBot xtra projets]]] { putdccsi $idx "Heu, ce projet ne fait pas partie de la liste des projets actifs apparament." return 0 } if ![matchattr $nick T-G] { putdccsi $idx "Heu, $nick n'est pas un admin projet !? (Je ne bloque pas la commande...)" } set nouvliste "" foreach item [getuser $nick xtra projadmin] { if {[string tolower $item] != [string tolower $projet]} { lappend nouvliste $item } } lappend nouvliste $projet setuser $nick xtra projadmin $nouvliste putdccsi $idx "Oki, $nick est maintenant officiellement l'admin responsable de la supervision du projet '$projet'." return 1 } "admin" { set nouvliste "" foreach item [getuser $nick xtra projadmin] { if {[string tolower $item] != [string tolower $projet]} { lappend nouvliste $item } } setuser $nick xtra projadmin $nouvliste putdccsi $idx "Oki, $nick n'est plus l'admin responsable de la supervision du projet '$projet'." return 1 } default { putdccsi $idx "Cette option n'est pas valide ..." return 0 } } } bind dcc - projets dcc_projets proc dcc_projets {hand idx args} { set args [lindex $args 0] if {$args == ""} { putdcc $idx "La liste des projets actifs sur #Aide:" putdcc $idx "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯" foreach projet [getuser AideBot xtra projets] { set oki 0 set adm "14" set fichproj [string tolower $projet] regsub -all {\ } $fichproj "_" fichproj if [file exist "projets/$fichproj"] { set txt "°" } else { set txt "" } set objectif "" foreach user [userlist A] { if [string match *[string tolower $projet]* [string tolower [getuser $user xtra projadmin]]] { append adm " [getuser $user xtra vrainick]" } } foreach user [userlist R] { if [string match *[string tolower $projet]* [string tolower [getuser $user xtra responsable]]] { foreach pro [getuser $user xtra ETATprojet] { if {[string tolower [lindex $pro 0]] == [string tolower $projet]} { set rappel [dire_date [lindex $pro 1]] if {[lindex $pro 1] > [unixtime]} { set coul 14 } else { set coul 7 } set objectif [lindex $pro 2] } } set oki 1 if [matchattr $hand A] { putdcc $idx "[ajouter_espaces " »» Projet: $projet $txt" 40] => Responsable: [ajouter_espaces [getuser $user xtra vrainick] 10] $adm" if {$objectif != ""} { putdcc $idx "$coul $rappel -> $objectif" } } else { putdcc $idx "[ajouter_espaces " »» Projet: $projet $txt" 40] => Responsable: [ajouter_espaces [getuser $user xtra vrainick] 10]" } } } if !$oki { putdcc $idx "[ajouter_espaces " »» Projet: $projet" 40] => Responsable: *** NÉANT ***" } } putdcc $idx "_____________________________________" putdcc $idx "Pour plus de détails sur un projet, .projets " news_check $idx "dcc" $hand "&projets" 0 putdcc $idx "¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯" } elseif {[matchattr $hand T] & ([llength [split $args +]] == 3)} { set pro [string tolower [lrange [lindex [split $args +] 1] 1 end]] set oki 0 foreach projet [getuser AideBot xtra projets] { if {[string tolower $projet] == $pro} { foreach user [userlist R] { if [string match *[string tolower $projet]* [string tolower [getuser $user xtra responsable]]] { set resp $user set pro $projet set oki 1 } } } } if !$oki { putdcc $idx "Ce projet n'est pas listé ou n'a pas de responsable, désolé ..." return 0 } set quand [expr [dire_date70 "[strftime %d [unixtime]]/[strftime %m [unixtime]]/[strftime %Y [unixtime]]"] + [expr 86400 * [lindex [lindex [split $args +] 1] 0]]] set objectif [string range [lindex [split $args +] 2] 1 end] lappend buf "{$pro} $quand {$objectif}" foreach ancien [getuser $resp xtra ETATprojet] { if {$pro != [lindex $ancien 0]} { lappend buf $ancien } } setuser $resp xtra ETATprojet $buf putdcc $idx "Oki, j'ai programmé pour le [dire_date $quand] une discussion avec $resp sur l'objectif «$objectif» dans le projet $pro" } else { set oki 0 set objectif "" foreach projet [getuser AideBot xtra projets] { if {[string tolower $projet] == [string tolower $args]} { set oki 1 putdcc $idx "----------------------------------------" putdcc $idx " »» Projet: $projet" foreach user [userlist R] { if [string match *[string tolower $projet]* [string tolower [getuser $user xtra responsable]]] { putdcc $idx " => [ajouter_espaces "Responsable:" 17] $user" foreach pro [getuser $user xtra ETATprojet] { if {[string tolower [lindex $pro 0]] == [string tolower $projet]} { set rappel [dire_date [lindex $pro 1]] if {[lindex $pro 1] > [unixtime]} { set coul 14 } else { set coul 7 } set objectif [lindex $pro 2] } } } } foreach user [userlist P] { if [string match *[string tolower $projet]* [string tolower [getuser $user xtra adjoint]]] { putdcc $idx " -> [ajouter_espaces "Adjoint[mf $user "" "e"]:" 17] $user" } } set liste "" foreach user [userlist P] { if [string match *[string tolower $projet]* [string tolower [getuser $user xtra participant]]] { lappend liste $user } } putdcc $idx " > [ajouter_espaces "Participant(s):" 17] $liste" if {[matchattr $hand A] | [string match *[string tolower $projet]* [string tolower [getuser $hand xtra responsable]]]} { foreach user [userlist A] { if [string match *[string tolower $projet]* [string tolower [getuser $user xtra projadmin]]] { putdcc $idx "14 => [ajouter_espaces "Superviseur:" 17] $user " } } if {$objectif != ""} { putdcc $idx "$coul * $rappel -> $objectif" } } putdcc $idx "----------------------------------------" set projet [string tolower $projet] regsub -all {\ } $projet "_" projet if [file exist "projets/$projet"] { set f [open "projets/$projet" r] while {[gets $f line] >= 0} { putdcc $idx " $line" } close $f putdcc $idx "----------------------------------------" } } } if !$oki { putdcc $idx "Hum, ce projet n'existe apparament pas!" putdcc $idx "## Syntaxe .projets" putdcc $idx " .projets " if [matchattr $hand T] { putdcc $idx " .projets + + (admins projets uniquement)" } return 0 } } return 1 }