bind dcc A +suspend plus_suspend proc plus_suspend {hand idx args} { set args [lindex $args 0] set cible [lindex $args 0] set duree [lindex $args 1] set raison [lrange $args 2 end] set tempsmax 168 if ![validuser $cible] { putdcc $idx "Désolé, je ne connais personne de ce nom ..." return 0 } if ![estunnombre:ok $duree] { putdcc $idx "Désolé, mais la durée n'est pas un nombre entier naturel ($duree) ..." return 0 } if [matchattr $hand G] { set tempsmax 1440 } if [matchattr $cible S] { putdcc $idx "Hum! Cette personne est déjà suspendue !!!" return 0 } if {[matchattr $cible A] & ![matchattr $hand Gb]} { putdcc $idx "Bien tu sais, j'aime autant mieux pas suspendre un admin :-/" return 0 } if {[expr $duree + $tempsmax] <= $tempsmax} { putdcc $idx "Vous dépassez le temps maximal autorisé pour une suspension ..." return 0 } if {![matchattr $cible OJE] & ([lindex $raison 0] == "@")} { putdcc $idx "Ceci n'est pas une suspension d'exception, n'utilisez pas ce critère par habitude svp ..." return 0 } if {[matchattr $cible OJE] & ($duree > 2)} { if {[lindex $raison 0] == "@"} { if [matchattr $cible E] { chattr $cible -E putlog "Retiré l'attribut de parrain à $cible suite à sa suspension de plus de 2h." foreach user "[userlist A] $cible" { sendnote AideBot $cible "Retiré l'attribut de parrain à $cible suite à sa suspension de plus de 2h." } } if [matchattr $cible J] { dcc_promo $hand $idx "-opa $cible" putlog "Retiré l'attribut d'op adjoint à $cible suite à sa suspension de plus de 2h." foreach user "[userlist A] $cible" { sendnote AideBot $cible "Retiré l'attribut d'op adjoint à $cible suite à sa suspension de plus de 2h." } } if [matchattr $cible O] { dcc_promo $hand $idx "-op $cible" putlog "Retiré l'attribut d'op à $cible suite à sa suspension de plus de 2h." foreach user "[userlist A] $cible" { sendnote AideBot $cible "Retiré l'attribut d'op à $cible suite à sa suspension de plus de 2h." } } set raison [lrange $raison 1 end] } else { putdcc $idx "Hum! Les suspensions sur les Ops, Ops adjoints ou Parrains sont limitées à 2 heures... Si la personne mérite une plus longue suspension, alors elle ne devrait plus être op/parrain au départ !!! (voir syntaxe)" return 0 } } if {$raison != ""} { chattr $cible +S-px|-v #Aide setuser $cible XTRA susp_debut [ctime [unixtime]] setuser $cible XTRA susp_duree $duree setuser $cible XTRA susp_reste $duree setuser $cible XTRA susp_auteur $hand setuser $cible XTRA susp_raison $raison if {[getuser $cible xtra loginx] != ""} { putbot Aide "auth" putbot Aide "msg X suspend #Aide [getuser $cible xtra loginx] $duree h" putbot Aide "msg X suspend #Cours [getuser $cible xtra loginx] $duree h" } pushmode #Aide -v [hand2nick $cible #Aide] pushmode #Cours -v [hand2nick $cible #Cours] boot $cible "Suspendu par $hand" bootbot $cible flagnote4.0 AideBot $idx "+A Suspension de $cible par $hand pour une durée de $duree heure(s). Raison invoquée: $raison" sendnote Aidebot $cible "Suspension de $cible par $hand pour une durée de $duree heure(s). Raison invoquée: $raison" set fichier [open "/aide/www/admins/suspensions.txt" a] puts $fichier "\[[date] [time]\] Suspension de $cible par $hand pour une durée de $duree heure(s). Raison invoquée: $raison" close $fichier save dcc_liste "zero" 999 "membres" return 1 } else { putdcc $idx "### Mauvaise syntaxe ! ###" putdcc $idx "Syntaxe correcte: .+suspend \[@\] " putdcc $idx "Utiliser avec soin... l'alias est celui dans le bot, la durée est comptée en heure(s) et ne peut dépasser 168 pour un admin canal/projets ou 1440 pour un admin général. La raison est obligatoire. Le @ permet -seulement en cas graves- de retirer les statuts de parrain et d'opérateur/opérateur adjoint automatiquement." } } bind dcc A -suspend moins_suspend proc moins_suspend {hand idx args} { set args [lindex $args 0] set cible [lindex $args 0] set raison [lrange $args 1 end] if ![matchattr $cible S] { putdcc $idx "### Mauvaise syntaxe ! ###" putdcc $idx "Syntaxe correcte: .-suspend " return 0 } chattr $cible -S if ![matchattr $cible W] { chattr $cible +px|v #Aide } setuser $cible XTRA susp_debut setuser $cible XTRA susp_duree setuser $cible XTRA susp_reste setuser $cible XTRA susp_auteur setuser $cible XTRA susp_raison if {[getuser $cible xtra loginx] != ""} { putbot Aide "auth" putbot Aide "msg X unsuspend #Aide [getuser $cible xtra loginx]" putbot Aide "msg X unsuspend #Cours [getuser $cible xtra loginx]" } flagnote4.0 AideBot $idx "+A Annulation de la suspension de $cible par $hand. Raison invoquée: $raison" sendnote AideBot $cible "Annulation de la suspension de $cible par $hand. Raison invoquée: $raison" set fichier [open "/aide/www/admins/suspensions.txt" a] puts $fichier "\[[date] [time]\] Annulation de la suspension de $cible par $hand. Raison invoquée: $raison" close $fichier save dcc_liste "zero" 999 "membres" return 1 } bind time - "55 * * * *" susp_timer proc susp_timer {min hour day month year} { foreach cible [userlist] { if [matchattr $cible S] { if {[getuser $cible XTRA susp_reste] == 1} { chattr $cible -S if ![matchattr $cible W] { chattr $cible +px|v #Aide } setuser $cible XTRA susp_debut setuser $cible XTRA susp_duree setuser $cible XTRA susp_reste setuser $cible XTRA susp_auteur setuser $cible XTRA susp_accueil set cible2 "[string range $cible 0 7]2" if {[getuser $cible xtra loginx] != ""} { putbot Aide "auth" putbot Aide "msg X unsuspend #Aide [getuser $cible xtra loginx]" putbot Aide "msg X unsuspend #Cours [getuser $cible xtra loginx]" } foreach user [userlist +A] { sendnote AideBot $user "Annulation automatique de la suspension de $cible: Expirée." } sendnote AideBot $cible "Annulation automatique de la suspension de $cible: Expirée." set fichier [open "/aide/www/admins/suspensions.txt" a] puts $fichier "\[[date] [time]\] Annulation automatique de la suspension de $cible: Expirée." close $fichier save dcc_liste "zero" 999 "membres" } else { setuser $cible XTRA susp_reste [expr [getuser $cible XTRA susp_reste] - 1] } } if {[getuser $cible xtra public] != ""} { set delai [lindex [getuser $cible xtra public] 0] if {$delai > 1} { set message [lrange [getuser $cible xtra public] 1 end] set delai [expr $delai - 1] setuser $cible xtra public "$delai $message" } else { setuser $cible xtra public } } } }