bind dcc OJ kick unkick proc unkick {hand idx args} { set nick [lindex [lindex $args 0] 0] set raison [lrange [lindex $args 0] 1 end] set canal [lindex [console $idx] 0] if {[onchan $nick $canal] && ![matchattr [nick2hand $nick $canal] b] && ($raison != "")} { putserv "KICK $canal [lindex $nick 0] :(de la part de [getuser $hand xtra vrainick]) $raison" return 1 } else { putdcc $idx "## Usage: .kick " if {![onchan $nick $canal] && ($nick != "")} { putdcc $idx " $nick n'est pas sur $canal" } elseif {$raison == ""} { putdcc $idx " Tu dois donner une raison!" } } } bind dcc A kick- unkick- proc unkick- {hand idx args} { set nick [lindex [lindex $args 0] 0] set raison [lrange [lindex $args 0] 1 end] set canal [lindex [console $idx] 0] if [onchan $nick $canal] { putserv "KICK $canal [lindex $nick 0] :$raison" return 1 } else { putdcc $idx "## Usage: .kick- \[raison\]" if {![onchan $nick $canal] && ($nick != "")} { putdcc $idx " $nick n'est pas sur $canal" } } } bind dcc OJ petitban dcc_petitban proc dcc_petitban {hand idx args} { set nick [lindex [lindex $args 0] 0] set raison [lrange [lindex $args 0] 1 end] set canal [lindex [console $idx] 0] if {[onchan $nick $canal] && ![matchattr [nick2hand $nick $canal] b] && ($raison != "")} { petitban $nick $canal "(de la part de [getuser $hand xtra vrainick]) $raison" return 1 } else { putdcc $idx "## Usage: .petitban " if {![onchan $nick $canal] && ($nick != "")} { putdcc $idx " $nick n'est pas sur $canal" } elseif {$raison == ""} { putdcc $idx " Tu dois donner une raison!" } } } bind dcc A petitban- dcc_petitban- proc dcc_petitban- {hand idx args} { set nick [lindex [lindex $args 0] 0] set raison [lrange [lindex $args 0] 1 end] set canal [lindex [console $idx] 0] if [onchan $nick $canal] { petitban $nick $canal $raison return 1 } else { putdcc $idx "## Usage: .petitban- \[raison\]" if {![onchan $nick $canal] && ($nick != "")} { putdcc $idx " $nick n'est pas sur $canal" } } } bind dcc O kickban unkickban bind dcc O banip unkickban proc unkickban {hand idx args} { global lastbind dernierquitpart set nick [lindex [lindex $args 0] 0] set raison [lrange [lindex $args 0] 1 end] set canal [lindex [console $idx] 0] if {([onchan $nick $canal] | ([string tolower $nick] == [string tolower [lindex $dernierquitpart 0]])) && ![matchattr [nick2hand $nick $canal] b] && ($raison != "")} { if [onchan $nick $canal] { set host [getchanhost $nick] } else { set host [lindex $dernierquitpart 1] } if {[string tolower $lastbind] == "banip"} { set masque "*!*@[lindex [split $host @] 1]" } else { set masque [trouver_masquehost "$nick!$host" "precis"] } putserv "MODE $canal +b $masque" newchanban $canal $masque [getuser $hand xtra vrainick] $raison 60 putserv "KICK $canal [lindex $nick 0] :(de la part de [getuser $hand xtra vrainick]) $raison" return 1 } else { putdcc $idx "## Usage: .[string tolower $lastbind] " if {![onchan $nick $canal] && ($nick != "")} { putdcc $idx " $nick n'est pas sur $canal" } else { putdcc $idx " Tu dois donner une raison!" } } } bind dcc A kickban- unkickban- bind dcc A banip- unkickban- proc unkickban- {hand idx args} { global lastbind dernierquitpart set nick [lindex [lindex $args 0] 0] set raison [lrange [lindex $args 0] 1 end] set canal [lindex [console $idx] 0] if {[onchan $nick $canal] | ([string tolower $nick] == [string tolower [lindex $dernierquitpart 0]])} { if [onchan $nick $canal] { set host [getchanhost $nick] } else { set host [lindex $dernierquitpart 1] } if {[string tolower $lastbind] == "banip-"} { set masque "*!*@[lindex [split $host @] 1]" } else { set masque [trouver_masquehost "$nick!$host" "precis"] } if {$raison == ""} { set $raison "Banni!" } putserv "MODE $canal +b $masque" newchanban $canal $masque $hand $raison 60 putserv "KICK $canal [lindex $nick 0] :$raison" return 1 } else { putdcc $idx "## Usage: .[string tolower $lastbind] \[raison\]" if {![onchan $nick $canal] && ($nick != "")} { putdcc $idx " $nick n'est pas sur $canal" } } } bind dcc A xtraban xtraban bind dcc A extraban xtraban proc xtraban {hand idx args} { global dernierquitpart set nick [lindex [lindex $args 0] 0] set raison [lrange [lindex $args 0] 1 end] if {$raison == ""} { set raison "XB: Exclu du canal" } else { set raison "XB: $raison" } set canal [lindex [console $idx] 0] if {[onchan $nick $canal] | ([string tolower $nick] == [string tolower [lindex $dernierquitpart 0]])} { if [onchan $nick $canal] { set host [getchanhost $nick] } else { set host [lindex $dernierquitpart 1] } newchanban $canal "$nick*!*@*" $hand $raison 15 putserv "KICK $canal $nick :$raison" set masque "*!*[lindex [split $host @] 1]" putserv "MODE $canal +b $masque" newchanban $canal $masque $hand $raison 15 set identd [lindex [split $host @] 0] set masque [trouver_masquehost "$nick!$host" "precis"] putserv "MODE $canal +b $masque" newchanban $canal $masque $hand $raison 15 return 1 } else { putdcc $idx "## Usage: .xtraban \[raison\]" if {![onchan $nick $canal] && ($nick != "")} { putdcc $idx " $nick n'est pas sur $canal" } } } ################################# # KickBan à court terme proc timer_petitsbans { } { global listepetitsbans if [catch timer_petitsbans_nobug] { set listepetitsbans "" } } proc timer_petitsbans_nobug { } { global listepetitsbans if {[llength $listepetitsbans] == 0} { return 0 } pushmode [lindex [lindex $listepetitsbans 0] 1] -b "[lindex [lindex $listepetitsbans 0] 0]!*@*" killchanban #Aide "[lindex [lindex $listepetitsbans 0] 0]!*@*" if {[llength $listepetitsbans] > 1} { set listepetitsbans [lrange $listepetitsbans 1 end] utimer 20 timer_petitsbans } else { set listepetitsbans "" } } set listepetitsbans "" proc petitban {nick canal raison} { global listepetitsbans utimer 20 timer_petitsbans lappend listepetitsbans "$nick $canal" banetkick $canal $nick "$raison) (Ban 20 secondes" "$nick!*@*" "" 1 } ################################## # Ajout d'un temps par défaut au .+ban bind dcc O +ban dcc_ban proc dcc_ban {hand idx args} { set args [lindex $args 0] set pos 0 set masque [lindex $args $pos] incr pos set canal [lindex $args $pos] if {($canal == "*") || [validchan $canal]} { incr pos } else { set canal [lindex [console $idx] 0] } set duree [lindex $args $pos] set unite [string tolower [lindex $args [expr $pos + 1]]] if [estunnombre:ok $duree] { incr pos if [string match *$unite* "mhj"] { incr pos } else { set unite "m" } } elseif {$duree == "*"} { incr pos } else { set duree 30 set unite "m" } set raison [lrange $args $pos end] if {([llength $raison] < 2) || ![matchattr $hand O $canal] || (![matchattr $hand A] && ($canal == "*"))} { putdcc $idx "## Syntaxe: .+ban \[#Canal\] \[\[ \[m|h|j\]\]|*\] " return 0 } if {$unite == "j"} { set duree [expr $duree * 1440] } if {$unite == "h"} { set duree [expr $duree * 60] } if {$canal == "*"} { newban $masque [getuser $hand xtra vrainick] $raison $duree } else { newchanban $canal $masque [getuser $hand xtra vrainick] $raison $duree } if {$duree > 599} { if {[llength $raison] < 6} { putdcc $idx "La raison n'était pas assez détaillée, je n'ai pas ajouté de news pour toi. Tu dois en ajouter une." } else { putdcc $idx "La raison du ban a été ajoutée en news." news_add "AideBot" "dcc" "AideBot" "#aide" "[unixtime] LONG BAN: [getuser $hand xtra vrainick] a ajouté un ban d'une durée de [dire_delai [expr $duree * 60]] sur $masque: $raison" } } return 1 } ######################################################### # Pour éviter d'envoyer 10 fois le kickban au serveur ! # ######################################################### set listekicketban "" proc banetkick { chan kick kickmsg ban banmsg banduree} { global listekicketban foreach item $listekicketban { if {$kick == [lindex $item 0]} { return 0 } if {$ban == [lindex $item 1]} { return 0 } } lappend listekickban "$kick $ban" utimer 10 retirerlistekicketban putserv "MODE $chan +b $ban" putserv "KICK $chan $kick :$kickmsg" if {$banduree != 0} { newchanban $chan $ban Aidebot $banmsg $banduree } } proc retirerlistekicketban { } { catch retirerlistekicketban_nobug } proc retirerlistekicketban_nobug { } { global listekicketban set listekicketban [lrange $listekicketban 1 end] } ######################################################## # Note le dernier part / quit pour en permettre le ban # ######################################################## set dernierquitpart "" bind part - * setdernierquitpart bind sign - * setdernierquitpart proc setdernierquitpart {nick host hand chan bla} { global dernierquitpart if {![matchattr $hand AGTCOJMNRPH] & ([string tolower $chan] == "#aide")} { set dernierquitpart "$nick $host" } }