Hey thanks.. it works But as i said earlier the bans are getting added globally. I just want to make the bans for specific channels only..
what i should alter in it now?
And How do i set the same reason for all the bans.. instead of typing reason for everytime .. can i make a perm reason to be added in the tcl itself. ?
I've said that already, but I still hope Skipper will finally get a clue and will start using eggdrop in some sane way:
Skipper, you keep requesting feature scripts that simply don't make sense - either duplicating already existing eggdrop feature (eggdrop already has a built-in "blacklist", it's called banlist) or using eggdrop as a proxy for doing human op chores manually where such proxy isn't needed (your ops that you don't want added to bot's userlist should kick/ban/police a channel themselves, not using the bot); amazingly enough, you managed to find whole script that does the former (or did you write it yourself? a complete waste of time)
Thanks for the help ppl.. i have done the channel specific one.. but left with the reason part alone.. Just that am lazy to add the blacklist reason everytime.. so wanted to put a reason permanently in the tcl itself.. wonder how to do it.. if someone can help pls do.. else stop commenting..
set blacklist_file "scripts/dbase/blacklist"
setudef flag black
bind MSG m|- \$blacklist blacklist:list
bind MSG m|- \$blackadd blacklist:add
bind MSG m|- \$blackdel blacklist:del
bind JOIN -|- * blacklist:join
proc blacklist:list {nickname hostname handle arguments} {
global blacklist
set entrys 0
puthelp "PRIVMSG $nickname :BlackList Entrys"
puthelp "PRIVMSG $nickname :Nr. Owner HostMask"
foreach entry [array names blacklist] {
incr entrys
set owner [lindex $blacklist($entry) 0]
while {[string length $owner] < 15} {
set owner "$owner "
}
if {[string length $entrys] < 2} {
set target "$entrys "
} else {
set target $entrys
}
puthelp "PRIVMSG $nickname :#$target $owner $entry"
}
puthelp "PRIVMSG $nickname :End of list."
}
proc blacklist:add {nickname hostname handle arguments} {
global blacklist
set arguments [blacklist:clean $arguments]
set banmask [blacklist:validate:host [lindex $arguments 0]]
if {([regexp -all -- {!} $banmask] > 1) || ([regexp -all -- {@} $banmask] > 1)} {
puthelp "PRIVMSG $nickname :Sorry, Couldn't Add That HostMask."
return
}
set owner $handle
if {[regexp {^(\d{1,2}|[0-3][0-6][0-5])$} [lindex $arguments 1]]} {
set expire [expr ([lindex $arguments 1] * 86400) + [unixtime]]
set reason [join [lrange $arguments 2 end]]
} else {
set expire 0
set reason [join [lrange $arguments 1 end]]
}
if {[llength $reason] >= 1} {
if {![info exists blacklist($banmask)]} {
set blacklist($banmask) "$owner $expire $reason"
puthelp "PRIVMSG $nickname :Done. $banmask BlackListed Successfully (Reason: $reason)."
} else {
puthelp "PRIVMSG $nickname :Sorry, Couldn't Add That HostMask."
}
} else {
puthelp "PRIVMSG $nickname :You Forgot To Type A BlackList Reason."
}
}
proc blacklist:del {nickname hostname handle arguments} {
global blacklist
set arguments [blacklist:clean $arguments]
set banmask [lindex $arguments 0]
set success 0
if {[regexp {^#([0-9]+)$} $banmask tmp number]} {
set item 0
foreach entry [array names blacklist] {
incr item
if {$item == $number} {
unset blacklist($entry)
set success 1
}
}
} else {
if {[info exists blacklist($banmask)]} {
unset blacklist($banmask)
set success 1
}
}
if {$success == 0} {
puthelp "PRIVMSG $nickname :Couldn't Delete The Requested Ban. Use \$blacklist To View Them."
} else {
puthelp "PRIVMSG $nickname :Done."
}
}
proc blacklist:join {nickname hostname handle chan} {
global blacklist
if {![botisop $chan]} {return}
if {[lsearch -exact [channel info $chan] +black] == -1} {return 0}
set userhost [blacklist:weirdclean "$nickname![getchanhost $nickname]"]
foreach entry [array names blacklist] {
set reason [lrange [blacklist:clean $blacklist($entry)] 2 end]
set blackhost [blacklist:weirdclean $entry]
if {[string match -nocase $blackhost $userhost]} {
putquick "MODE $chan -o+b $nickname $entry"
putquick "KICK $chan $nickname :[join $reason]"
}
}
}
proc blacklist:validate:host {i} {
regsub -all {\*+} $i {*} i
array set ban {
ident *
host *
}
set ban(nick) $i
if {[regexp -- {!} $i]} {
regexp -- {^(.+?)!(.*?)(@(.*))?$} $i tmp ban(nick) ban(ident) tmp ban(host)
} elseif {[regexp -- {@} $i]} {
regexp -- {^(.+!)?(.*?)(@(.*))?$} $i tmp ban(nick) ban(ident) tmp ban(host)
}
foreach item [array names ban] {
if {[string length $ban($item)] < 1} {
set ban($item) *
}
}
return $ban(nick)!$ban(ident)@$ban(host)
}
proc blacklist:load {} {
global blacklist blacklist_file
regexp {(\S+/)?} $blacklist_file tmp blacklist_dir
if {$blacklist_dir != ""} {
if {![file isdirectory $blacklist_dir]} {
file mkdir $blacklist_dir
putlog "Created directory: $blacklist_dir"
}
}
if {![file exists $blacklist_file]} {
array set blacklist {}
return
}
if {[array exists blacklist]} {
array unset blacklist
}
set file [open $blacklist_file r]
while {![eof $file]} {
gets $file line
if {[regexp -- {(\S+)\s(\S+)\s(\S+)\s(.+)} $line tmp banmask owner expire reason]} {
if {$expire >= [unixtime] || ($expire == 0)} {
set blacklist($banmask) "$owner $expire $reason"
}
}
}
close $file
}
proc blacklist:save {} {
global blacklist blacklist_file
set file "[open $blacklist_file w]"
foreach entry [array names blacklist] {
puts $file "$entry $blacklist($entry)"
}
close $file
}
proc blacklist:weirdclean {i} {
regsub -all -- \\\\ $i \001 i
regsub -all -- \\\[ $i \002 i
regsub -all -- \\\] $i \003 i
regsub -all -- \\\} $i \004 i
regsub -all -- \\\{ $i \005 i
return $i
}
proc blacklist:clean {i} {
regsub -all -- \\\\ $i \\\\\\\\ i
regsub -all -- \\\[ $i \\\\\[ i
regsub -all -- \\\] $i \\\\\] i
regsub -all -- \\\} $i \\\\\} i
regsub -all -- \\\{ $i \\\\\{ i
regsub -all -- \\\" $i \\\\\" i
return $i
}
blacklist:load
Tcl is working perfect.
But theres a small bug.. which am unable to trace it out.. When i delete the blacklist.. its getting deleted.. but when i restart the bot.. the one which i deleted stays there still. How to fix it?
There is something to do with the delete part of the tcl.. i wonder what i should do there.
Skipper wrote:But theres a small bug.. which am unable to trace it out.. When i delete the blacklist.. its getting deleted.. but when i restart the bot.. the one which i deleted stays there still. How to fix it?
save your data after modifying it
There is something to do with the delete part of the tcl.. i wonder what i should do there.
you should ditch that useless & bloated thing and learn HOW TO USE EGGDROP'S BUILT-IN BAN SUPPORT, which is zillion times better than your lame stuff
I know abt the eggdrops ban stuff as well. When i use this script there is some reason behind it.. Coz of the firewall probs i cant dcc the bot in my workplace.. thats the reason i have opted for this script..
Genuine helpers only reply pls
Rgds
Skipper.
P.S: Those who want to increase their post count.. kindly poke in some other topic.. and dont be a spoilsport.