
Search the forums as this has been done (from memory).sdays wrote:I need a enforcebans tcl that load's kick msg's from a txt file thx
Code: Select all
bind pub o|o !kick kickproc
proc kickproc {nick uhost hand chan text} {
set text [split $text]
set kickmsgs {
{msg 1}
{msg 2}
{msg 3}
}
set kickmsg [lindex $kickmsgs [rand [llength $kickmsgs]]]
if {[isop $nick $chan] && [onchan [join $text] $chan]} {
putkick $chan [join $text] "$kickmsg"
}
}
Code: Select all
proc getrandomreason {} {
set file [open "YOURFILE" r]
set data [split [read $file] \n]
close $file
return [lindex $data [rand [llength $data]]]
}
Code: Select all
putserv "KICK #channel nickname :[getrandomreason]"
Code: Select all
bind mode - "* +b" enforcebans
set enforce(max) "8"
set enforce(kmsg) ""
proc enforcebans {nick uhost hand chan mc ban} {
global enforce
if {![botisop $chan]} { return }
set ban [string map {"\\" "\\\\" "\[" "\\["} $ban]
if {[string match -nocase $ban $::botnick]} { return }
set kickmsg "$enforce(kmsg)"
regsub -all :ban: $kickmsg $ban kickmsg
regsub -all :nick: $kickmsg $nick kickmsg
set list ""
foreach user [chanlist $chan] {
if {[matchattr [nick2hand $user] f $chan]} { continue }
if {[string match -nocase $ban $user![getchanhost $user $chan]]} {
lappend list $user
}
}
if {[string match [llength $list] 0]} { return }
if {[llength $list] > $enforce(max)} {
putserv "MODE $chan -ob $nick $ban"
} else {
if {[llength $list] <= "3"} {
putserv "KICK $chan [join $list ,] :$kickmsg"
} else {
set nlist ""
foreach x $list {
lappend nlist $x
if {[llength $nlist] == "3"} {
putserv "KICK $chan [join $nlist ,] :$kickmsg"
set nlist ""
}
}
if {[llength $nlist] != ""} {
putserv "KICK $chan [join $nlist ,] :$kickmsg"
set nlist ""
}
}
}
}
putlog "Enforcebans loaded."
Code: Select all
set kickmsg "$enforce(kmsg)"
Code: Select all
set kickmsg [getrandomreason]