Florian 8 жил өмнө
parent
commit
f741242062

+ 1239 - 0
BlackTools2.5.2/Commands/BT.BanCmds.tcl

@@ -0,0 +1,1239 @@
+#########################################################################
+##          BlackTools - The Ultimate Channel Control Script           ##
+##                    One TCL. One smart Eggdrop                       ##
+#########################################################################
+############################   BANCMDS TCL   ############################
+#########################################################################
+##						                       ##
+##   BlackTools  : http://blacktools.tclscripts.net	               ##
+##   Bugs report : http://www.tclscripts.net/	                       ##
+##   GitHub page : https://github.com/tclscripts/BlackToolS-TCL-script ##
+##   Online Help : irc://irc.undernet.org/tcl-help 	               ##
+##                 #TCL-HELP / UnderNet                                ##
+##                 You can ask in english or romanian                  ##
+##					                               ##
+#########################################################################
+
+
+################################ Commands #############################
+
+################################ ub ###################################
+
+proc ub:link {mask} {
+	global black
+	set chanban 0
+	set chanlink 0
+foreach chan [link:get] {
+	set chanlink [expr $chanlink + 1]
+foreach b [blacktools:banlist $chan] {
+	set cidr 0
+	set bhost [lindex [split $b] 3]
+	set real_bhost [string map [list \[ {\[} \] {\]} \? {\?} \\ {\\}] $bhost]
+if {[regexp {[/]} $real_bhost]} {
+	set read_ip [lindex [split $real_bhost @] 1]
+	set theip [lindex [split $mask @] 1]
+	set cidr_ip [ipcidr $read_ip $theip]
+if {$cidr_ip == "1"} {
+	set read_rest_ip [lindex [split $mask @] 0]
+	set read_theip [lindex [split $real_bhost @] 0]
+if {[string match -nocase $read_rest_ip $read_theip] || [string match -nocase $read_theip $read_rest_ip]} {
+	set cidr 1
+		}
+	}
+}
+if {[string match -nocase $mask $real_bhost] || [string match -nocase $real_bhost $mask] || $cidr == "1"} {
+	set chanban [expr $chanban + 1]
+if {([setting:get $chan xtools] || [setting:get $chan xonly]) && [onchan $black(chanserv) $chan]} {
+	putserv "PRIVMSG $black(chanserv) :unban $chan $bhost"
+} else {
+	pushmode $chan -b $bhost
+}
+	blacktools:delban $real_bhost $chan "0" "0"
+			}
+		}
+	}
+	return "$chanlink $chanban"
+}
+
+proc ub:process {user mask nick hand host chan chan1 type gl cmd whois link prv} {
+	global black
+	set split_cmd [split $cmd ":"]
+	set id [lindex $split_cmd 1]
+	set cmd [lindex $split_cmd 0]
+	set cmd_status [btcmd:status $chan $hand "$cmd" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+	set vhost [lindex [split $mask @] 1]
+	blacktools:dns:ub $user $mask $nick $hand $host $vhost $chan $chan1 $type $gl $cmd $whois $link $id $prv
+}
+
+proc ub:act {user mask nick hand host vhost chan chan1 type gl cmd whois link id prv} {
+	global black
+	set split_cmd [split $cmd ":"]
+	set cmd [lindex $split_cmd 0]
+if {$host == "" && $mask == "" && $whois == "1"} { return }
+	set rest_host [lindex [split $mask @] 0]
+	set fulldns "$rest_host@$host"
+if {$host == ""} { set fulldns $mask}
+	set host $prv
+	set nounban 0
+if {$user == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr $cmd
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick $cmd
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv $cmd
+		}
+	}
+	return
+}
+	
+if {![validchan $chan] && $link != "1" && $gl != "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+}
+
+if {$link != "1" && $gl != "1"} {
+if {![botisop $chan] && ![setting:get $chan xonly]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.noop none
+	return
+	}
+}
+	set show_mask $mask
+	set total_b 0
+	set rem_b 0
+	set xban 0
+
+if {![regexp {\*} $mask] && $whois != "1" && $id != "id"} {
+	putserv "USERHOST :$user"
+	bind RAW - 302 ub:get:host
+	set ::uuser $user
+	set ::unick $nick
+	set ::uhand $hand
+	set ::uhost $host
+	set ::uchan $chan
+	set ::uchan1 $chan1
+	set ::utype $type
+	set ::ugl $gl
+	set ::ucmd $cmd
+	set ::ulink $link
+	set ::prv $prv
+return
+}
+
+if {$link == "1"} {
+	set return [ub:link $mask]
+	set chanlink [lindex $return 0]
+	set chanban [lindex $return 1]
+	blacktools:tell $nick $host $hand $chan $chan1 ub.7 "$chanban $chanlink"
+	return
+} 
+
+if {$gl != "1"} {
+if {(($mask == "*") || ($mask == "*!*@*")) && [matchattr $hand -|OA $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 ub.5 none
+	return
+} 
+foreach b [blacktools:banlist $chan] {
+	set bhost [lindex [split $b] 3]
+	set btime [lindex [split $b] 5]
+	set num [lindex [split $b] 1]
+if {[string match -nocase $mask $bhost] || [string match -nocase $fulldns $bhost] || [matchaddr $fulldns $bhost] || [matchaddr $mask $bhost] || ([matchaddr $bhost $fulldns] && $whois == "1") || ([matchaddr $bhost $mask] && $whois == "1") || [string equal -nocase $num $mask]} {
+	set bywho [lindex [split $b] 4]
+	set match_time [lindex [split $b] 5]
+	set read_tr [lindex [split $b] 7]
+	set total_b [expr $total_b + 1]
+	set split_bywho [split $bywho ":"]
+	set level [lindex $split_bywho 1]
+	set check [blacktools:check:levelub $hand $chan $level]
+if {$check == "-1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.nounban $bhost
+	set nounban 1
+	continue
+}
+if {$btime == "0" && [matchattr $hand -|O $chan]} {
+	continue
+}
+if {([blacktools:sticky $mask $chan] == "1") && [matchattr $hand -|OA $chan]} {
+	continue
+}
+	set rem_b [expr $rem_b + 1]
+
+if {([setting:get $chan xtools] || [setting:get $chan xonly]) && [onchan $black(chanserv) $chan]} {
+	putserv "PRIVMSG $black(chanserv) :unban $chan $bhost"
+} else {
+	putserv "MODE $chan -b $bhost"
+}
+	blacktools:delban $bhost $chan "0" "0"
+if {$read_tr == "2"} {
+	troll:del $bhost $chan
+			}
+			continue
+		}
+	}
+foreach b [banlist $chan] {
+	set bhost [lindex $b 0]
+	set btime [lindex $b 2]
+if {[string match -nocase $mask $bhost] || [string match -nocase $bhost $mask]} {
+	set total_b [expr $total_b + 1]
+if {$btime == "0" && [matchattr $hand -|O $chan]} {
+	continue
+}
+if {[isbansticky $bhost] && [matchattr $hand -|OA $chan]} {
+	continue
+}
+	set rem_b [expr $rem_b + 1]
+if {([setting:get $chan xtools] || [setting:get $chan xonly]) && [onchan $black(chanserv) $chan]} {
+	putserv "PRIVMSG $black(chanserv) :unban $chan $bhost"
+} else {
+	putserv "MODE $chan -b $bhost"
+}
+	killchanban $chan $bhost
+	}
+}
+
+if {$total_b == "0"} {
+if {$id == "id"} {
+	blacktools:tell $nick $host $hand $chan $chan1 ub.8 $show_mask
+	return
+}
+	set return [checkischanban_ub "" $show_mask $chan $whois]
+	set return_dns [checkischanban_ub "" $fulldns $chan $whois]
+
+if {$nounban == "1"} {
+	set return 0
+	set return_dns 0
+}
+if {$return == "1"} {
+	set bans [returnchanbans_ub $show_mask $chan $whois]
+foreach b $bans {
+if {([setting:get $chan xtools] || [setting:get $chan xonly]) && [onchan $black(chanserv) $chan]} {
+	putserv "PRIVMSG $black(chanserv) :unban $chan $b"
+} else {
+	pushmode $chan -b $b
+	}
+}
+	blacktools:tell $nick $host $hand $chan $chan1 ub.2 "[llength $bans] [llength $bans] $show_mask"
+	return
+} elseif {$return_dns == "1"} {
+	set bans [returnchanbans_ub $fulldns $chan $whois]
+foreach b $bans {
+if {([setting:get $chan xtools] || [setting:get $chan xonly]) && [onchan $black(chanserv) $chan]} {
+	putserv "PRIVMSG $black(chanserv) :unban $chan $b"
+} else {
+	pushmode $chan -b $b
+	}
+}
+	blacktools:tell $nick $host $hand $chan $chan1 ub.2 "[llength $bans] [llength $bans] $fulldns"
+	return
+} else {
+	blacktools:tell $nick $host $hand $chan $chan1 ub.1 $show_mask
+}
+if {[ischanban $mask $chan]} {
+if {([setting:get $chan xtools] || [setting:get $chan xonly]) && [onchan $black(chanserv) $chan]} {
+	putserv "PRIVMSG $black(chanserv) :unban $chan $mask"
+} else {
+	putserv "MODE $chan -b $mask"
+}
+	blacktools:tell $nick $host $hand $chan $chan1 ub.6 none
+	return
+}
+	blacktools:tell $nick $host $hand $chan $chan1 ub.1 $show_mask
+	} else {
+	set return [checkischanban_ub "" $show_mask $chan $whois]
+	set return_dns [checkischanban_ub "" $fulldns $chan $whois]
+if {$nounban == "1"} {
+	set return 0
+	set return_dns 0
+}
+if {$return == "1"} {
+	set bans [returnchanbans_ub $show_mask $chan $whois]
+foreach b $bans {
+if {([setting:get $chan xtools] || [setting:get $chan xonly]) && [onchan $black(chanserv) $chan]} {
+	putserv "PRIVMSG $black(chanserv) :unban $chan $b"
+} else {
+	pushmode $chan -b $b
+		}
+	}
+} elseif {$return_dns == "1"} {
+	set bans [returnchanbans_ub $fulldns $chan $whois]
+foreach b $bans {
+if {([setting:get $chan xtools] || [setting:get $chan xonly]) && [onchan $black(chanserv) $chan]} {
+	putserv "PRIVMSG $black(chanserv) :unban $chan $b"
+} else {
+	pushmode $chan -b $b
+			}
+		}
+	}
+if {$id == "id"} {
+	blacktools:tell $nick $host $hand $chan $chan1 ub.9 "$rem_b $total_b $show_mask"
+} else {
+if {$nounban == "0"} {
+	blacktools:tell $nick $host $hand $chan $chan1 ub.2 "$rem_b $total_b $show_mask"
+	blacktools:ub:getlast
+				}
+			}
+		}
+if {$total_b != "0" && $rem_b != "0"} {
+	set getlang [string tolower [setting:get $chan lang]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+	set backchan [join [setting:get $chan backchan]]
+if {$backchan != ""} {
+	set replace(%nick%) $hand
+	set replace(%msg.1%) $rem_b
+	set replace(%msg.2%) $total_b
+	set replace(%chan%) $chan
+	set replace(%msg.3%) $bhost
+	set text [black:color:set "" $black(say.$getlang.reportchan.3)]
+	set reply [join $text]
+	set reply [string map [array get replace] $reply]
+	puthelp "PRIVMSG $backchan :$reply"
+	}
+}
+	} else {
+foreach b [blacktools:banlist:gl] {
+	set bhost [lindex [split $b] 3]
+	set num [lindex [split $b] 1]
+	set btime [lindex [split $b] 4]
+if {[string match -nocase $mask $bhost] || [string match -nocase $fulldns $bhost] || [matchaddr $fulldns $bhost] || [matchaddr $mask $bhost] || ([matchaddr $bhost $fulldns] && $whois == "1") || ([matchaddr $bhost $mask] && $whois == "1") || [string equal -nocase $num $mask]} {
+	set total_b [expr $total_b + 1]
+	set rem_b [expr $rem_b + 1]
+	set match_time [lindex [split $b] 5]
+	blacktools:delban $bhost $chan "1" "0"
+if {$gl == "1"} {
+	blacktools:ub:global $bhost [channels] 0
+}
+	continue
+		}
+	}
+foreach b [banlist] {
+	set bhost [lindex $b 0]
+	set btime [lindex $b 2]
+if {[string match -nocase $mask $bhost] || [string match -nocase $bhost $mask]} {
+	set total_b [expr $total_b + 1]
+if {[setting:get $chan xtools] || [setting:get $chan xonly] && [onchan $black(chanserv) $chan]} {
+	putserv "PRIVMSG $black(chanserv) :unban $chan $bhost"
+} else {
+	putserv "MODE $chan -b $bhost"
+}
+	killban $bhost
+		}
+	}
+if {$total_b == "0"} {
+if {$id == "id"} {
+	blacktools:tell $nick $host $hand $chan $chan1 ub.11 $show_mask
+} else {
+	blacktools:tell $nick $host $hand $chan $chan1 ub.3 $show_mask
+}
+	} else {
+if {$id == "id"} {
+	blacktools:tell $nick $host $hand $chan $chan1 ub.10 "$total_b $show_mask"
+} else {
+	blacktools:tell $nick $host $hand $chan $chan1 ub.4 "$total_b $show_mask"
+	blacktools:ub:getlast
+			}
+		}
+	}
+}
+
+proc blacktools:ub:getlast {} {
+	global black
+	set lastban [blacktools:getlastban]
+if {$lastban == "-1"} {
+	foreach tmr [utimers] {
+if {[string match "*blacktools:autounban*" [join [lindex $tmr 1]]]} {
+	killutimer [lindex $tmr 2]
+	}
+}
+if {[info exists black(lastban)]} {
+	unset black(lastban)
+}
+	return
+}
+if {[info exists black(lastban)]} {
+if {$lastban == $black(lastban)} {
+	return
+	}
+}
+	set black(lastban) $lastban
+foreach tmr [utimers] {
+if {[string match "*blacktools:autounban*" [join [lindex $tmr 1]]]} {
+	killutimer [lindex $tmr 2]
+	}
+}
+	utimer $black(lastban) [list blacktools:autounban]	
+}
+
+proc blacktools:ub:global {bhost channels num} {
+	global black
+	set chan [lindex $channels $num]
+	set incnum [expr $num + 1]
+if {([setting:get $chan xtools] || [setting:get $chan xonly]) && [onchan $black(chanserv) $chan]} {
+	putserv "PRIVMSG $black(chanserv) :unban $chan $bhost"
+} else {
+	putserv "MODE $chan -b $bhost"
+}
+	if {[lindex $channels $incnum] != ""} {
+	blacktools:ub:global $bhost $channels $incnum
+	}
+}
+
+################################ sb ###################################
+
+proc sb:act {bhost what nick hand host vhost chan chan1 type cmd entry} {
+	global black
+
+if {$bhost == "-"} {
+	blacktools:tell $nick $what $hand $chan $chan1 gl.hostnotexist "none"
+	return
+}
+
+if {($bhost != "") && ($entry == "")} {
+	putserv "USERHOST :$bhost"
+	bind RAW - 302 sb:get:host
+	set ::suser $bhost
+	set ::snick $nick
+	set ::shand $hand
+	set ::shost $host
+	set ::schan $chan
+	set ::schan1 $chan1
+	set ::stype $type
+	set ::scmd $cmd
+	set ::swhat $what
+	return
+}
+
+if {[matchattr $hand mn]} {
+	sb:search $nick $what $hand $chan $chan1 $bhost $vhost "1" $entry $type
+	return
+}
+	sb:search $nick $what $hand $chan $chan1 $bhost $vhost "0" $entry $type
+}
+
+proc sb:process {bhost what nick hand host chan chan1 type cmd entry} {
+global botnick black tcldir
+	set cmd_status [btcmd:status $chan $hand "sb" 0]
+if {$cmd_status == "1"} {
+	return
+}
+	set vhost [lindex [split $bhost @] 1]
+	blacktools:dns:sb $bhost $what $nick $hand $host $vhost $chan $chan1 $type $cmd $entry
+}
+
+proc sb:search {nick host hand chan chan1 bhost vhost gl entry type1} {
+	global black
+	set show_bhost $bhost
+	set gl_bans 0
+	set cidr 0
+	set local_bans 0
+	set rest_host [lindex [split $bhost @] 0]
+	set fulldns "$rest_host@$vhost"
+if {$vhost == ""} { set fulldns $bhost }
+	set getlang [string tolower [getuser $hand XTRA OUTPUT_LANG]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+if {$bhost == ""} {
+switch $type1 {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "sb"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "sb"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "sb"
+		}
+	}
+	return 0
+}
+if {$gl == "1"} {
+foreach b [blacktools:banlist:gl] {
+	set cidr 0
+	set mask [lindex [split $b] 3]
+	set id [lindex [split $b] 1]
+	set real_mask [string map [list \[ {\[} \] {\]} \\ {\\}] $mask]
+if {[regexp {[/]} $real_mask]} {
+	set read_ip [lindex [split $real_mask @] 1]
+	set theip [lindex [split $bhost @] 1]
+	set theip_dns [lindex [split $fulldns @] 1]
+	set cidr_ip [ipcidr $read_ip $theip]
+	set cidr_ip_dns [ipcidr $read_ip $theip_dns] 
+if {$cidr_ip == "1" || $cidr_ip_dns == "1"} {
+	set read_rest_ip [lindex [split $bhost @] 0]
+	set read_theip [lindex [split $real_mask @] 0]
+if {[string match -nocase $read_rest_ip $read_theip] || [string match -nocase $read_theip $read_rest_ip]} {
+	set cidr 1
+		}
+	}
+}
+if {([string match -nocase $fulldns $real_mask] || [string match -nocase $real_mask $fulldns]) || ([string match -nocase $bhost $real_mask] || [string match -nocase $real_mask $bhost]) || $bhost == $id || $cidr == "1"} {
+	set gl_bans [expr $gl_bans + 1]
+	set mask [lindex [split $b] 3]
+	set id [lindex [split $b] 1]
+	set expire [lindex [split $b] 5]
+	set created [lindex [split $b] 6]
+	set created [clock format $created -format %D-%H:%M:%S]
+	set breason [lrange [split $b] 9 end]
+	set comment [join [blacktools:get_comment $breason]]
+	set breason [blacktools:rem_comment $breason]
+	set breason [join [encoding convertfrom utf-8 $breason]]
+	set bywho [lindex [split $b] 4]
+if {$expire != "0"} {
+	set expire [return_time_2 $getlang [expr $expire - [unixtime]]]
+	blacktools:tell $nick $host $hand $chan $chan1 sb.3 "$id $mask $bywho $created $expire $breason"
+if {$comment != "-1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 sb.12 $comment
+	}
+} else { 
+	set expire $black(say.$getlang.banlist.13)
+	blacktools:tell $nick $host $hand $chan $chan1 sb.10 "$id $mask $bywho $created $expire $breason"
+if {$comment != "-1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 sb.12 $comment
+				}
+			}
+		}
+	}
+}
+foreach b [blacktools:banlist $chan] {
+	set cidr 0
+	set mask [lindex [split $b] 3]
+	set id [lindex [split $b] 1]
+	set real_mask [string map [list \[ {\[} \] {\]} \\ {\\}] $mask]
+if {[regexp {[/]} $real_mask]} {
+	set read_ip [lindex [split $real_mask @] 1]
+	set theip [lindex [split $bhost @] 1]
+	set theip_dns [lindex [split $fulldns @] 1]
+	set cidr_ip [ipcidr $read_ip $theip]
+	set cidr_ip_dns [ipcidr $read_ip $theip_dns]
+if {$cidr_ip == "1" || $cidr_ip_dns == "1"} {
+	set read_rest_ip [lindex [split $bhost @] 0]
+	set read_theip [lindex [split $real_mask @] 0]
+if {[string match -nocase $read_rest_ip $read_theip] || [string match -nocase $read_theip $read_rest_ip]} {
+	set cidr 1
+		}
+	}
+}
+if {([string match -nocase $fulldns $real_mask] || [string match -nocase $real_mask $fulldns]) || ([string match -nocase $bhost $real_mask] || [string match -nocase $real_mask $bhost]) || $bhost == $id || $cidr == "1"} {
+	set local_bans [expr $local_bans + 1]
+	set mask [lindex [split $b] 3]
+	set id [lindex [split $b] 1]
+	set expire [lindex [split $b] 5]
+	set created [lindex [split $b] 6]
+	set sticky [lindex [split $b] 7]
+	set created [clock format $created -format %D-%H:%M:%S]
+	set breason [lrange [split $b] 9 end]
+	set comment [join [blacktools:get_comment $breason]]
+	set breason [blacktools:rem_comment $breason]
+	set breason [join [encoding convertfrom utf-8 $breason]]
+	set bywho [lindex [split $b] 4]
+	set split_bywho [split $bywho ":"]
+	set handle [lindex $split_bywho 0]
+	set type [lindex $split_bywho 1]
+if {$type != "" && $type != "bot"} {
+	set bywho "$handle\([encoding convertfrom utf-8 $type]\)"
+} elseif {$sticky == "1"} { 
+	set bywho "$handle\(STICKY\)"
+} else {
+	set bywho $handle
+}
+if {$expire != "0"} {
+	set expire [return_time_2 $getlang [expr $expire - [unixtime]]]
+	blacktools:tell $nick $host $hand $chan $chan1 sb.4 "$id $mask $bywho $created $expire $breason"
+if {$comment != "-1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 sb.12 $comment
+	}
+} else { 
+	set expire $black(say.$getlang.banlist.13)
+	blacktools:tell $nick $host $hand $chan $chan1 sb.9 "$id $mask $bywho $created $expire $breason"
+if {$comment != "-1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 sb.12 $comment
+				}
+			}
+		}
+	}
+if {[expr $local_bans + $gl_bans] > 0} {
+	return
+} else {
+	set gl_bans 0
+	set local_bans 0
+}
+
+foreach b [banlist $chan] {
+	set mask [lindex $b 0]
+if {[string match -nocase $mask $bhost] || [string match -nocase $bhost $mask]} {
+	set local_bans [expr $local_bans + 1]
+	}
+}
+if {$gl == "1"} {
+	foreach b [banlist] {
+	set mask [lindex $b 0]
+if {[string match -nocase $mask $bhost] || [string match -nocase $bhost $mask]} {
+	set gl_bans [expr $gl_bans + 1]
+	}
+}
+if {[expr $local_bans + $gl_bans] == "0"} {
+if {$entry == "2"} {
+	blacktools:tell $nick $host $hand $chan $chan1 sb.11 $show_bhost
+} else {
+	blacktools:tell $nick $host $hand $chan $chan1 sb.2 $show_bhost
+}
+	return
+}
+if {[expr $local_bans + $gl_bans] > 10} {
+	blacktools:tell $nick $host $hand $chan $chan1 sb.5 "none"
+	return
+	}
+} else {
+
+if {$local_bans == "0"} {
+if {$entry == "2"} {
+	blacktools:tell $nick $host $hand $chan $chan1 sb.11 $show_bhost
+} else {
+	blacktools:tell $nick $host $hand $chan $chan1 sb.2 $show_bhost
+}
+	return
+}
+if {$local_bans > 10} {
+	blacktools:tell $nick $host $hand $chan $chan1 sb.5 "none"
+	return
+	}
+}
+if {$gl_bans > "0"} {
+foreach b [banlist] {
+	set mask [lindex $b 0]
+if {[string match -nocase $mask $bhost] || [string match -nocase $bhost $mask]} {
+	set mask [lindex $b 0]
+	set expire [lindex $b 2]
+	set created [lindex $b 3]
+	set breason [split [lindex $b 1]]
+	set bywho [split [lindex $b 5]]
+	set created [clock format $created -format %D-%H:%M:%S]
+if {$expire != "0"} {
+	set expire [return_time_2 $getlang [expr $expire - [unixtime]]]
+	blacktools:tell $nick $host $hand $chan $chan1 sb.3 "- $mask $bywho $created $expire $breason"
+} else { 
+	set expire "NEVER" 
+	blacktools:tell $nick $host $hand $chan $chan1 sb.10 "- $mask $bywho $created $expire $breason"
+				}
+			}
+		}
+	}
+
+if {$local_bans > "0"} {
+foreach b [banlist $chan] {
+	set mask [lindex $b 0]
+if {[string match -nocase $mask $bhost] || [string match -nocase $bhost $mask]} {
+	set mask [lindex $b 0]
+	set expire [lindex $b 2]
+	set created [lindex $b 3]
+	set breason [split [lindex $b 1]]
+	set bywho [split [lindex $b 5]]
+	set created [clock format $created -format %D-%H:%M:%S]
+if {$expire != "0"} {
+	set expire [return_time_2 $getlang [expr $expire - [unixtime]]]
+	blacktools:tell $nick $host $hand $chan $chan1 sb.4 "- $mask $bywho $created $expire $breason"
+} else { 
+	set expire "NEVER" 
+	blacktools:tell $nick $host $hand $chan $chan1 sb.9 "- $mask $bywho $created $expire $breason"
+				}
+			}
+		}
+	}	
+}
+
+################################### banlist ###################################
+
+proc banlist:process {nick host hand chan chan1 user type cmd next} {
+global botnick black
+	set cmd_status [btcmd:status $chan $hand "banlist" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+	set i 0
+	set getlang [string tolower [getuser $hand XTRA OUTPUT_LANG]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+
+if {$user == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr $cmd
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick $cmd
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv $cmd
+		}
+	}
+	return 0
+}
+
+if {[matchattr $hand nm] && [string equal -nocase "global" $user]} {
+	set gl "1"
+	banlist:getbans $nick $host $hand $chan $chan1 $user "" $type $next $gl [blacktools:banlist:gl] ""
+	return
+}
+
+if {[string match -nocase "all" $user]} {
+	set gl ""
+	set user ""
+	banlist:getbans $nick $host $hand $chan $chan1 $user "" $type $next $gl [blacktools:banlist $chan] ""
+	return
+}
+
+if {[string match -nocase "other" $user]} {
+	set gl ""
+	set user ""
+	banlist:getbans $nick $host $hand $chan $chan1 $user "" $type $next $gl [banlist $chan] "2"
+	return
+}
+
+if {[onchan $user $chan] && ![validuser $user]} {
+	set handle $user
+	set user [nick2hand $user]
+} else {
+	set handle ""
+}
+
+if {![validuser $user] && (![string equal -nocase "all" $user])} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.nomem none
+	return
+}
+
+
+if {![matchattr $user nmo|OASMN $chan] && (![string equal -nocase "all" $user])} { blacktools:tell $nick $host $hand $chan $chan1 gl.noaccess none 
+	return
+}	
+	set gl ""
+	set timestamp [clock format [clock seconds] -format {%Y%m%d%H%M%S}]
+	set file_temp "temp.$timestamp"
+if {![file exists $file_temp]} {
+	set file [open $file_temp w]
+	close $file
+}
+	set file [open $file_temp a]
+foreach b [blacktools:banlist $chan] {
+	set bywho [lindex [split $b] 4]
+	set split_bywho [split $bywho ":"]
+	set handz [join [lindex [split $split_bywho] 0]]
+	set type [lindex [split $split_bywho] 1]
+if {[string equal -nocase $handz $user]} {
+	set id [lindex [split $b] 1]
+	set mask [lindex [split $b] 3]
+	set expire [lindex [split $b] 5]
+	set created [lindex [split $b] 6]
+	set sticky [lindex [split $b] 7]
+	set breason [lrange [split $b] 9 end]
+	set breason [blacktools:rem_comment $breason]
+if {$type != ""} {
+	puts $file "$id $mask $expire $created $bywho $sticky [join $breason]"
+			} else {
+	puts $file "$id $mask $expire $created $bywho $sticky [join $breason]"		
+			}
+		}
+	}
+	close $file
+
+	set file [open $file_temp r]
+	set w [read -nonewline $file]
+	close $file
+	set data [split $w "\n"]
+	banlist:getbans $nick $host $hand $chan $chan1 $user $handle $type $next $gl $data "1"
+	file delete $file_temp
+}
+
+proc banlist:remain {nick host hand count chan chan1 type gl user userb prv} {
+	global black lastbind botnick
+if {$count == "0"} { return }
+	set getlang [string tolower [getuser $hand XTRA OUTPUT_LANG]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+	set split_lastbind [split $lastbind ""]
+	set charbind [lindex $split_lastbind 0]
+if {[lsearch -exact $black(cmdchar) $charbind] < 0} {
+	set charbind ""
+}
+	set firstchar [lindex $black(cmdchar) 0]
+if {[string equal $lastbind "*"]} { set charbind "prv" }
+if {[string equal -nocase "**" $lastbind]} { set charbind "$botnick " }
+if {[string equal -nocase "***" $lastbind]} { set charbind "$host" }
+if {$charbind == ""} {
+	set charbind $firstchar
+if {[validuser $hand]} {
+	set getchar [getuser $hand XTRA MYCHAR]
+if {$getchar != ""} {
+	set charbind $getchar
+		}
+	}
+}
+if {$charbind == "prv"} { set charbind "" }
+	set replace(%char%) $charbind
+	set replace(%counter%) $count
+	set replace(%user%) $user
+	set replace(%chan%) $chan
+if {$gl == "1"} {
+	set msg [black:color:set $hand $black(say.$getlang.banlist.3)]
+} 
+if {$userb == "1"} {
+	set msg [black:color:set $hand $black(say.$getlang.banlist.8)]	
+} 
+if {$user == ""} {
+	set msg [black:color:set $hand $black(say.$getlang.banlist.10)]
+}
+if {$userb == "2"} {
+	set msg [black:color:set $hand $black(say.$getlang.banlist.15)]
+} 
+if {$prv == "prv"} {
+	set msg [black:color:set $hand $black(say.$getlang.banlist.14)]
+if {$userb == "2"} {
+	set msg [black:color:set $hand $black(say.$getlang.banlist.15)]
+}
+if {$gl == "1"} {
+	set msg [black:color:set $hand $black(say.$getlang.banlist.3)]
+} 
+	puthelp "PRIVMSG $nick :[string map [array get replace] $msg]"
+	return
+}
+	switch $type {
+	0 {
+	puthelp "NOTICE $nick :[string map [array get replace] $msg]"
+}
+	1 {
+	puthelp "PRIVMSG $chan1 :[string map [array get replace] $msg]"	
+}
+	2 {
+	puthelp "PRIVMSG $nick :[string map [array get replace] $msg]"
+	}
+}
+
+}
+
+proc banlist:getbans {nick host hand chan chan1 user handle type next gl banlist userb} {
+	global black
+	set show_user $user
+	set show_handle $handle
+	set getlang [string tolower [getuser $hand XTRA OUTPUT_LANG]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+	set getmethod [getuser $hand XTRA OUTPUT_TYPE]
+if {$getmethod == ""} { set getmethod "0" }
+	if {[string equal -nocase $next "-next"]} {
+if {[info exists black(morebans:$chan:$hand)]} {
+if {$black(morebans:$chan:$hand) >= $black(modul:nr:entries)} {
+for {set i $black(showbans:$chan:$hand)} { $i < [expr $black(showbans:$chan:$hand) + $black(modul:nr:entries)] } { incr i } {
+	set current_ban [lindex $banlist $i]
+	show:bans $nick $host $hand $chan $chan1 $gl $current_ban $userb
+		}
+	set black(morebans:$chan:$hand) [expr $black(morebans:$chan:$hand) - $black(modul:nr:entries)]
+	banlist:remain $nick $host $hand $black(morebans:$chan:$hand) $chan $chan1 $getmethod $gl $user $userb $host
+	set black(showbans:$chan:$hand) [expr $black(showbans:$chan:$hand) + $black(modul:nr:entries)]
+	} else {
+if {$black(morebans:$chan:$hand) < 1} {
+	return
+}
+for {set i $black(showbans:$chan:$hand)} { $i <= [expr $black(showbans:$chan:$hand) +  $black(morebans:$chan:$hand)]} { incr i } {
+	set current_ban [lindex $banlist $i]
+	show:bans $nick $host $hand $chan $chan1 $gl $current_ban $userb
+		}
+	set black(morebans:$chan:$hand) [expr $black(morebans:$chan:$hand) - $black(showbans:$chan:$hand)]
+	}
+	foreach tmr [utimers] {
+if {[string match -nocase "*banlist:unset:more $chan $hand*" [join [lindex $tmr 1]]]} {
+	killutimer [lindex $tmr 2]
+		}
+	}
+	utimer 30 [list banlist:unset:more $chan $hand]
+if {$black(morebans:$chan:$hand) < 1} {
+	blacktools:tell $nick $host $hand $chan $chan1 banlist.4 none
+	}
+}	
+	return
+}
+	set black(cbanlist:$chan:$hand) [llength $banlist]
+	set black(showbans:$chan:$hand) 0
+if {$black(cbanlist:$chan:$hand) > $black(modul:nr:entries)} {
+if {$gl == "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 banlist.2 "$black(cbanlist:$chan:$hand)"
+}
+if {$user == ""} {
+	blacktools:tell $nick $host $hand $chan $chan1 banlist.6 "$black(cbanlist:$chan:$hand)"
+}
+if {$userb == "1" && $handle != ""} {
+	blacktools:tell $nick $host $hand $chan $chan1 banlist.7 "$black(cbanlist:$chan:$hand) $show_user\($show_handle\)"
+}
+if {$userb == "1" && $handle == ""} {
+	blacktools:tell $nick $host $hand $chan $chan1 banlist.7 "$black(cbanlist:$chan:$hand) $show_user"
+}
+
+	set black(morebans:$chan:$hand) [expr $black(cbanlist:$chan:$hand) - $black(modul:nr:entries)]
+	for {set i 0} { $i < $black(modul:nr:entries) } { incr i } {
+	set current_ban [lindex $banlist $i]
+	show:bans $nick $host $hand $chan $chan1 $gl $current_ban $userb
+	}
+	set black(showbans:$chan:$hand) [expr $black(showbans:$chan:$hand) + $black(modul:nr:entries)]
+if {$black(morebans:$chan:$hand) > 0} {
+	banlist:remain $nick $host $hand $black(morebans:$chan:$hand) $chan $chan1 $getmethod $gl $user $userb $host
+}
+	foreach tmr [utimers] {
+if {[string match -nocase "*banlist:unset:more $chan $hand*" [join [lindex $tmr 1]]]} {
+	killutimer [lindex $tmr 2]
+		}
+	}
+	utimer 60 [list banlist:unset:more $chan $hand]
+} else {
+if {$gl == "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 banlist.2 "$black(cbanlist:$chan:$hand)"
+}
+if {$user == ""} {
+	blacktools:tell $nick $host $hand $chan $chan1 banlist.6 "$black(cbanlist:$chan:$hand)"
+}
+if {$userb == "1" && $handle != ""} {
+	blacktools:tell $nick $host $hand $chan $chan1 banlist.7 "$black(cbanlist:$chan:$hand) $show_user\($show_handle\)"
+}
+if {$userb == "1" && $handle == ""} {
+	blacktools:tell $nick $host $hand $chan $chan1 banlist.7 "$black(cbanlist:$chan:$hand) $show_user"
+}
+for {set i 0} { $i < $black(modul:nr:entries) } { incr i } {
+	set current_ban [lindex $banlist $i]
+	show:bans $nick $host $hand $chan $chan1 $gl $current_ban $userb
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 banlist.4 none
+	}
+}
+
+proc banlist:unset:more {chan hand} {
+	global black
+if {[info exists black(morebans:$chan:$hand)]} {
+	unset black(morebans:$chan:$hand)
+}
+if {[info exists black(cbanlist:$chan:$hand)]} {
+	unset black(cbanlist:$chan:$hand)
+	}
+if {[info exists black(showbans:$chan:$hand)]} {
+	unset black(showbans:$chan:$hand)
+	}
+}
+
+proc show:bans {nick host hand chan chan1 gl b userb} {
+	global black
+if {$b == ""} { return }
+	set never_expire 0
+	set getlang [string tolower [getuser $hand XTRA OUTPUT_LANG]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+if {$userb == "1"} {
+	set id [lindex [split $b] 0]
+	set mask [lindex [split $b] 1]
+	set expire [lindex [split $b] 2]
+	set created [lindex [split $b] 3]
+	set bywho [lindex [split $b] 4]
+	set sticky [lindex [split $b] 5]
+	set breason [lrange [split $b] 6 end]
+	set breason [blacktools:rem_comment $breason]
+	set breason [join [encoding convertfrom utf-8 $breason]]
+} elseif {$userb == "2"} {
+	set id "-"
+	set mask [lindex $b 0]
+	set expire [lindex $b 2]
+	set created [lindex $b 3]
+	set breason [split [lindex $b 1]]
+	set breason [join [encoding convertfrom utf-8 $breason]]
+	set bywho [split [lindex $b 5]]
+if {[isbansticky [lindex $b 0] $chan]} {
+	set sticky 1
+} else {
+	set sticky 0
+}
+} else {
+	set id [lindex [split $b] 1]
+	set mask [lindex [split $b] 3]
+	set expire [lindex [split $b] 5]
+	set bywho [lindex [split $b] 4]
+	set created [lindex [split $b] 6]
+	set sticky [lindex [split $b] 7]
+	set breason [lrange [split $b] 9 end]
+	set breason [blacktools:rem_comment $breason]
+	set breason [join [encoding convertfrom utf-8 $breason]]
+}
+	set split_bywho [split $bywho ":"]
+	set handle [lindex $split_bywho 0]
+	set type [lindex $split_bywho 1]
+if {$type != ""} {
+	set type "BAN([join [encoding convertfrom utf-8 $type]])"
+	set bywho "$handle"
+} elseif {$sticky == "1"} {
+	set type "BAN(STICK)"
+	set bywho "$handle"
+} else {
+	set bywho $handle
+	set type "BAN"
+}
+if {$expire != "0"} {
+	set expire [return_time_2 $getlang [expr $expire - [unixtime]]]
+} else {
+	set expire $black(say.$getlang.banlist.13)
+	set never_expire 1
+}
+	set created [clock format $created -format %D-%H:%M:%S]
+
+if {$never_expire == "0"} {
+if {$userb == "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 banlist.9 "$id $type $mask $created $expire $breason"
+	return
+}
+	blacktools:tell $nick $host $hand $chan $chan1 banlist.5 "$id $type $mask $bywho $created $expire $breason"
+	} else {
+if {$userb == "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 banlist.12 "$id $type $mask $created $expire $breason"
+	return
+}
+	blacktools:tell $nick $host $hand $chan $chan1 banlist.11 "$id $type $mask $bywho $created $expire $breason"
+	}        
+}
+
+################################ w ####################################
+
+proc w:process {wnick nick hand host chan chan1 type} {
+global botnick black
+	set cmd_status [btcmd:status $chan $hand "w" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+	set handle [nick2hand $wnick]
+	set show_wnick $wnick
+	set getlang [string tolower [setting:get $chan lang]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+
+if {$wnick == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "w"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "w"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "w"
+		}
+	}
+	return 0
+}
+if {![validchan $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+}
+
+if {![botisop $chan] && ![setting:get $chan xonly]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.noop none
+	return
+}
+
+if {![onchan $wnick $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.usernotonchan $show_wnick
+	return
+}
+if {![onchan $botnick $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
+	return
+}
+
+if {[isbotnick $wnick]} {
+	return
+}
+if {[matchattr $handle $black(exceptflags) $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.noban none
+	return
+}
+	set getreason [setting:get $chan w-reason]
+if {$getreason == ""} { 
+	set getlang [string tolower [setting:get $chan lang]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+	set getreason $black(say.$getlang.w.5)
+	set len [llength $getreason] 
+    set random [expr int(rand()*$len)] 
+    set getreason [lindex $getreason $random]
+}
+
+if {[setting:get $chan showhandle]} {
+	set reason "($hand) $getreason"
+	} else { set reason "$getreason"
+}
+	set getcount [setting:get $chan kickcount]
+	set kcount [expr $getcount +1]
+	setting:set $chan kickcount $kcount
+	blacktools:banner3_stats "w" $chan $hand ""
+if {[setting:get $chan showcount]} {
+	set reason "$reason - $kcount -" 
+} else {
+	set reason "$reason" 
+}
+if {[setting:get $chan xtools] || [setting:get $chan xonly] && [onchan $black(chanserv) $chan]} {
+	putserv "PRIVMSG $black(chanserv) :kick $chan $wnick $reason"
+} else {
+	putserv "KICK $chan $wnick :$reason"
+}
+	puthelp "PRIVMSG $wnick :[black:color:set $hand $black(say.$getlang.w.6)]"
+}
+
+################################### k #################################
+
+proc k:process {knick nick hand host reason chan chan1 type} {
+global botnick black
+	set cmd_status [btcmd:status $chan $hand "k" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+	set handle [nick2hand $knick]
+	set found_host ""
+	set kick_host 0
+	set found_access ""
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+if {$knick == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "k"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "k"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "k"
+		}
+	}
+	return
+}
+if {![validchan $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+}
+if {![botisop $chan] && ![setting:get $chan xonly]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.noop none
+	return
+}
+if {![onchan $botnick $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
+	return
+}
+if {[string match -nocase "*!*" $knick]} {
+	set kick_host 1
+	set finduser [finduser $knick]
+foreach user [chanlist $chan] {
+	set gethand [nick2hand $user]
+	set gethost "$user![getchanhost $user $chan]"
+if {[string match -nocase $knick $gethost]} {
+if {[matchattr $gethand $black(exceptflags) $chan]} {
+	lappend found_access $user
+	continue
+		}	
+	lappend found_host $user
+		}
+	}
+}
+
+if {[matchattr $handle $black(exceptflags) $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.noban none
+	return
+}
+
+if {$found_access != ""} {
+	blacktools:tell $nick $host $hand $chan $chan1 k.2 $found_access
+	return
+}
+
+if {![onchan $knick $chan] && $kick_host == "0"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.usernotonchan $knick
+	return
+}
+
+if {$kick_host == "1"} {
+if {$found_host == ""} {
+	blacktools:tell $nick $host $hand $chan $chan1 k.1 none
+	return
+	}
+}
+
+if {[isbotnick $knick]} {
+	return
+}
+
+if {$reason == ""} {
+if {[setting:get $chan k-reason] != ""} {
+	set reason [join [setting:get $chan k-reason]]
+	}
+}
+if {$reason == ""} {
+	set getlang [string tolower [setting:get $chan lang]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+	set reason1 "$black(say.$getlang.k.5)"
+	set len [llength $reason1] 
+    set random [expr int(rand()*$len)] 
+    set reason1 [lindex $reason1 $random]
+ } else { set reason1 "$reason" }
+if {[setting:get $chan showhandle]} {
+	set reason "($hand) $reason1"
+	} else { set reason "$reason1" 
+}
+	set getcount [setting:get $chan kickcount]
+	set kcount [expr $getcount +1]
+	setting:set $chan kickcount $kcount
+	blacktools:banner3_stats "k" $chan $hand ""
+if {[setting:get $chan showcount]} {
+	set reason "$reason - $kcount -" 
+} else {
+	set reason "$reason" 
+}
+if {[setting:get $chan xonly] && [onchan $black(chanserv) $chan]} {
+if {$found_host != ""} {
+foreach f $found_host {
+	putserv "PRIVMSG $black(chanserv) :kick $chan $f $reason"
+	}
+} else {
+	putserv "PRIVMSG $black(chanserv) :kick $chan $knick $reason"
+	}
+} else {
+if {$found_host != ""} {
+	foreach f $found_host {
+	putserv "KICK $chan $f :$reason"
+	}
+} else {
+	putserv "KICK $chan $knick :$reason"
+		}
+	}
+}
+
+##############
+#########################################################################
+##   END                                                               ##
+#########################################################################

+ 2161 - 0
BlackTools2.5.2/Commands/BT.ChanCmds.tcl

@@ -0,0 +1,2161 @@
+#########################################################################
+##          BlackTools - The Ultimate Channel Control Script           ##
+##                    One TCL. One smart Eggdrop                       ##
+#########################################################################
+##########################   CHAN CMDS TCL   ############################
+#########################################################################
+##						                       ##
+##   BlackTools  : http://blacktools.tclscripts.net	               ##
+##   Bugs report : http://www.tclscripts.net/	                       ##
+##   GitHub page : https://github.com/tclscripts/BlackToolS-TCL-script ##
+##   Online Help : irc://irc.undernet.org/tcl-help 	               ##
+##                 #TCL-HELP / UnderNet                                ##
+##                 You can ask in english or romanian                  ##
+##					                               ##
+#########################################################################
+
+proc comand:chan {nick host hand chan arg} {
+global botnick wordsdir sdir black seendir count server uptime {server-online} version lastbind
+	set cmd_chan [lindex [split $arg] 0]
+	set chan1 $chan
+if {[isbotnick $nick]} { return }
+
+	set split_cmd [split $cmd_chan ""]
+	set char [lindex $split_cmd 0]
+	set cmd [join [lrange $split_cmd 1 end] ""]
+	set return [blacktools:mychar $char $hand]
+if {$return == "0"} {
+		return
+}
+switch -exact -- [string tolower $cmd] {
+
+login {
+if {[matchattr $hand mn]} {
+	set chan1 $chan
+	login:process $nick $host $hand $chan $chan1
+	}
+}
+
+report {
+	set type 0
+	set w [lindex [split $arg] 1]
+	set message [join [lrange [split $arg] 2 end]]
+	set chan1 $chan
+if {[regexp {^[&#]} $w]} {
+	set chan $w
+	set w [lindex [split $arg] 2]
+	set message [join [lrange [split $arg] 3 end]]
+}
+if {[matchattr $hand mno|MAO $chan]} {
+	return
+}
+	report:process $nick $char $host $hand $chan $chan1 $type $w $message
+}
+
+anunt {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 0
+	set chan1 "$chan"
+	set who [lindex [split $arg] 1]
+	set message [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+if {[regexp {^[&#]} $who] && [matchattr $hand nmo|M $who]} {
+	set chan $who
+	set who [lindex [split $arg] 2]
+	set message [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+		}
+	anunt:process $nick $char $hand $chan $chan1 $who $message $number $type
+	}
+}
+
+link {
+if {[matchattr $hand nm]} {
+	set type 0
+	set channels [join [lrange [split $arg] 1 end]]
+	set what [lindex [split $arg] 1]
+	set delchan [lindex [split $arg] 2]
+	set chan1 $chan
+	link:process $nick $char $hand $chan $chan1 $type $what $channels $delchan
+	}
+}
+
+note {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	set who [lindex [split $arg] 1]
+	set note [join [lrange [split $arg] 1 end]]
+	set number [lindex [split $arg] 2]
+	set user_send [lindex [split $arg] 2]
+	set note_send [join [lrange [split $arg] 3 end]]
+	set type 0
+	set chan1 $chan
+	note:process $nick $char $hand $chan $chan1 $who $note $user_send $note_send $number $type
+	}
+}
+
+q {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	set otherchan 0
+	set who [lindex [split $arg] 1]
+	set next [lindex [split $arg] 2]
+	set quote [join [lrange [split $arg] 1 end]]
+if {$who == "*"} {
+	set who [lindex [split $arg] 2]
+	set quote [join [lrange [split $arg] 1 end]]
+}
+if {[regexp {^[\[]} $who]} {
+	set who [lindex [split $arg] 2]
+	set quote [join [lrange [split $arg] 1 end]]
+if {$who == "*"} {
+	set who [lindex [split $arg] 3]
+	set quote [join [lrange [split $arg] 1 end]]
+	}
+}
+	set type 0
+	set chan1 $chan
+if {[regexp {^[&#]} $who] && [matchattr $hand nmo|AOMV $who]} {
+	set otherchan 1
+	set chan "$who"
+	set who [lindex [split $arg] 2]
+	set next [lindex [split $arg] 3]
+	set quote [join [lrange [split $arg] 2 end]]
+if {$who == "*"} {
+	set who [lindex [split $arg] 3]
+	set quote [join [lrange [split $arg] 2 end]]
+}
+if {[regexp {^[\[]} $who]} {
+	set who [lindex [split $arg] 3]
+	set quote [join [lrange [split $arg] 2 end]]
+if {$who == "*"} {
+	set who [lindex [split $arg] 4]
+	set quote [join [lrange [split $arg] 2 end]]
+		}
+	}
+}
+if {$otherchan == "1"} {
+	quote:process $nick "$char:chan" $hand $chan $chan1 $type $who $quote [lrange [split $arg] 2 end] $next
+	} else {
+	quote:process $nick "$char:chan" $hand $chan $chan1 $type $who $quote [lrange [split $arg] 1 end] $next
+		}
+	}
+}
+
+enable {
+if {[matchattr $hand nmo|M $chan]} {
+	set what [lindex [split $arg] 1]
+	set user [lindex [split $arg] 2]
+	set chan1 "$chan"
+	set type 0
+if {[regexp {^[&#]} $what] && [matchattr $hand nmo|M $what]} {
+	set chan "$what"
+	set what [lindex [split $arg] 2]
+	set user [lindex [split $arg] 3]
+}
+	enable:process $nick $char $hand $chan $chan1 $type $what $user
+	}
+}
+
+disable {
+if {[matchattr $hand nmo|M $chan]} {
+	set what [lindex [split $arg] 1]
+	set user [lindex [split $arg] 2]
+	set chan1 "$chan"
+	set type 0
+if {[regexp {^[&#]} $what] && [matchattr $hand nmo|M $what]} {
+	set chan "$what"
+	set what [lindex [split $arg] 2]
+	set user [lindex [split $arg] 3]
+}
+	disable:process $nick $char $hand $chan $chan1 $type $what $user
+	}
+}
+
+securemode {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 0
+	set chan1 "$chan"
+	set why [lindex [split $arg] 1]
+	set except [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 2]
+	set except [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+}
+	prot:module:process $nick $char $hand $chan $chan1 $why $except $type $number "securemode"
+	}
+}
+
+cp {
+if {[matchattr $hand nm]} {
+	set type 0
+	set chan1 $chan
+	set what [lindex [split $arg] 1]
+	set from [lindex [split $arg] 2]
+	set to [lindex [split $arg] 3]
+	cp:process $nick $char $hand $chan $chan1 $type $what $from $to
+	}
+}
+
+troll {
+if {[matchattr $hand nmo|AOM $chan]} {
+	set tr [lindex [split $arg] 1]
+	set chan1 "$chan"
+	set type 0
+if {[regexp {^[&#]} $tr] && [matchattr $hand nmo|MAO $tr]} {
+	set chan "$tr"
+	set tr [lindex [split $arg] 2]
+}
+	userhost:act $tr $nick $hand $char $chan $chan1 $type "1440" "troll" "" "0"
+	}
+}
+
+guestnick {
+if {[matchattr $hand nmo|M $chan]} {
+	set who [lindex [split $arg] 1]
+	set modul "guestnick"
+	set type 0
+	set chan1 $chan
+	set gnick [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+if {[regexp {^[&#]} $who] && [matchattr $hand nmo|M $who]} {
+	set who [lindex [split $arg] 2]
+	set gnick [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+		}
+	guestnick:process $nick $char $hand $chan $chan1 $who $gnick $type $number $modul
+	}
+}
+
+badhost {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 0
+	set chan1 "$chan"
+	set why [lindex [split $arg] 1]
+	set badh [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 2]
+	set badh [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+}
+	prot:module:process $nick $char $hand $chan $chan1 $why $badh $type $number "badhost"
+	}
+}
+
+badrealname {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 0
+	set chan1 "$chan"
+	set why [lindex [split $arg] 1]
+	set badf [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 2]
+	set badf [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+}
+	prot:module:process $nick $char $hand $chan $chan1 $why $badf $type $number "badrealname"
+	}
+}
+
+badquitpart {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 0
+	set chan1 "$chan"
+	set why [lindex [split $arg] 1]
+	set badq [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 2]
+	set badq [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+}
+	prot:module:process $nick $char $hand $chan $chan1 $why $badq $type $number "badquitpart"
+	}
+}
+
+
+badident {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 0
+	set chan1 "$chan"
+	set why [lindex [split $arg] 1]
+	set badi [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 2]
+	set badi [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+}
+	prot:module:process $nick $char $hand $chan $chan1 $why $badi $type $number "badident"
+	}
+}
+
+
+badnick {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 0
+	set chan1 "$chan"
+	set why [lindex [split $arg] 1]
+	set badn [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 2]
+	set badn [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+}
+	prot:module:process $nick $char $hand $chan $chan1 $why $badn $type $number "badnick"
+	}
+}
+
+
+badword {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 0
+	set chan1 "$chan"
+	set why [lindex [split $arg] 1]
+	set badw [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 2]
+	set badw [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+}
+	prot:module:process $nick $char $hand $chan $chan1 $why $badw $type $number "badword"
+	}
+}
+
+
+unset {
+if {[matchattr $hand nmo|M $chan]} {
+	set setting [lindex [split $arg] 1]
+	set chan1 $chan
+	set type 0
+if {[regexp {^[&#]} $setting] && [matchattr $hand nmo|M $setting]} {
+	set chan $setting
+	set setting [lindex [split $arg] 2]
+	}
+if {[string equal -nocase $setting "global"] && [matchattr $hand nm]} {
+	set setting [lindex [split $arg] 2]
+foreach c [channels] {
+	unset:process $nick $char $hand $c $chan1 $setting $type
+			}
+		return
+	}
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+	unset:process $nick $char $hand $chan $chan1 $setting $type
+	}
+}
+
+greet {
+if {[matchattr $hand nmo|M $chan]} {
+	set who [lindex [split $arg] 1]
+	set modul "greet"
+	set type 0
+	set chan1 $chan
+	set greet [join [lrange [split $arg] 2 end]]
+if {[regexp {^[&#]} $who] && [matchattr $hand nmo|M $who]} {
+	set chan $who
+	set who [lindex [split $arg] 2]
+	set greet [join [lrange [split $arg] 3 end]]
+	}
+	othermodule:process $nick $char $hand $chan $chan1 $who $greet $type $modul	
+	}
+}
+
+leave {
+if {[matchattr $hand nmo|M $chan]} {
+	set who [lindex [split $arg] 1]
+	set modul "leave"
+	set type 0
+	set chan1 $chan
+	set leave [join [lrange [split $arg] 2 end]]
+if {[regexp {^[&#]} $who] && [matchattr $hand nmo|M $who]} {
+	set chan $who
+	set who [lindex [split $arg] 2]
+	set leave [join [lrange [split $arg] 3 end]]
+	}
+	othermodule:process $nick $char $hand $chan $chan1 $who $leave $type $modul		
+	}
+}
+
+topic {
+if {[matchattr $hand nmo|M $chan]} {
+	set who [lindex [split $arg] 1]
+	set modul "topic"
+	set type 0
+	set chan1 $chan
+	set topic [join [lrange [split $arg] 2 end]]
+if {[regexp {^[&#]} $who] && [matchattr $hand nmo|M $who]} {
+	set chan $who
+	set who [lindex [split $arg] 2]
+	set topic [join [lrange [split $arg] 3 end]]
+}
+	othermodule:process $nick $char $hand $chan $chan1 $who $topic $type $modul	
+	}
+}
+
+vr {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set vr [lindex [split $arg] 1]
+	set chan1 "$chan"
+	set type 0
+if {[regexp {^[&#]} $vr] && [matchattr $hand nmo|MAO $vr]} {
+	set chan "$vr"
+	set vr [lindex [split $arg] 2]
+}
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+	userhost:act $vr $nick $hand $char $chan $chan1 $type $black(vr:bantime) "vr" "" "0"
+	}
+}
+
+dr {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set drone [lindex [split $arg] 1]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $drone] && [matchattr $hand nmo|OMA $drone]} {
+	set chan "$drone"
+	set drone [lindex [split $arg] 2]
+}
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+	userhost:act $drone $nick $hand $char $chan $chan1 $type $black(dr:bantime) "dr" "" "0"
+	}
+}
+
+bot {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set bot [lindex [split $arg] 1]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $bot] && [matchattr $hand nmo|OMA $bot]} {
+	set chan "$bot"
+	set bot [lindex [split $arg] 2]
+}
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+	userhost:act $bot $nick "$hand:bot" $char $chan $chan1 $type $black(bot:bantime) "bot" "" "0"
+	}
+}
+
+n {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set badnick [lindex [split $arg] 1]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $badnick] && [matchattr $hand nmo|MAO $badnick]} {
+	set chan "$badnick"
+	set badnick [lindex [split $arg] 2]
+}
+if {[setting:get $chan nextshortcmd]} {
+	nextpublic:process $nick $char $hand $chan $chan1 $badnick
+	return
+}
+if {[regexp {\*} $badnick]} {
+	blacktools:tell $nick $char $hand $chan $chan1 gl.instr "n"
+	return
+}
+if {$badnick == ""} {
+	blacktools:tell $nick $char $hand $chan $chan1 gl.instr "n"
+	return
+}
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+	bancmds:process $badnick $badnick $nick $hand $char $chan $chan1 $type $black(n:bantime) "n" "" "0"
+	}
+}
+
+id {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set badident [lindex [split $arg] 1]
+	set handle [nick2hand $badident]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $badident] && [matchattr $hand nmo|OMA $badident]} {
+	set chan "$badident"
+	set badident [lindex [split $arg] 2]
+}
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+	userhost:act $badident $nick $hand $char $chan $chan1 $type $black(id:bantime) "id" "" "0"
+	}
+}
+
+spam {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set spammer [lindex [split $arg] 1]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $spammer] && [matchattr $hand nmo|OMA $spammer]} {
+	set chan "$spammer"
+	set spammer [lindex [split $arg] 2]
+}
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+	userhost:act $spammer $nick $hand $char $chan $chan1 $type $black(spam:bantime) "spam" "" "0"
+	}
+}
+
+bw {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set badw [lindex [split $arg] 1]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $badw] && [matchattr $hand nmo|OMA $badw]} {
+	set chan "$badw"
+	set badw [lindex [split $arg] 2]
+}
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+	userhost:act $badw $nick $hand $char $chan $chan1 $type $black(bw:bantime) "bw" "" "0"
+	}
+}
+
+mb {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set badd [lindex [split $arg] 1]
+	set reason [join [lrange [split $arg] 2 end]]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $badd] && [matchattr $hand nmo|OMA $badw]} {
+	set chan "$badd"
+	set badd [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+}
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+	userhost:act $badd $nick $hand $char $chan $chan1 $type $black(mb:bantime) "mb" $reason "0"
+	}
+}
+
+
+black {
+if {[matchattr $hand nmo|MA $chan]} {
+	set blackb [lindex [split $arg] 1]
+	set reason [join [lrange [split $arg] 2 end]]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $blackb] && [matchattr $hand nmo|MA $blackb]} {
+	set chan "$blackb"
+	set blackb [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+}
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+	userhost:act $blackb $nick $hand $char $chan $chan1 $type "0" "black" $reason "0"
+	}
+}
+
+bl {
+if {[matchattr $hand nmo|MA $chan]} {
+	set blackb [lindex [split $arg] 1]
+	set reason [join [lrange [split $arg] 2 end]]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $blackb] && [matchattr $hand nmo|MA $blackb]} {
+	set chan "$blackb"
+	set blackb [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+}
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+	userhost:act $blackb $nick $hand $char $chan $chan1 $type "0" "black" $reason "0"
+	}
+}
+
+b {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set no_time 0
+	set type 0
+	set gl 0
+	set link 0
+	set chan1 "$chan"
+	set level ""
+	set b [lindex [split $arg] 1]
+if {[setting:get $chan nextshortcmd]} {
+	noidlepublic:process $nick $char $hand $chan $chan1 $b 0
+	return
+}
+	set tm [lindex [split $arg] 2]
+	set global [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 4 end]]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set global [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+}
+if {[regexp {^[&#]} $b] && [matchattr $hand nmo|MAO $b]} {
+	set chan $b
+	set b [lindex [split $arg] 2]
+	set tm [lindex [split $arg] 3]
+	set global [lindex [split $arg] 4]
+	set reason [join [lrange [split $arg] 5 end]]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set global [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 4 end]]
+}
+if {[regexp {^[-]} $tm]} {
+	set level [blacktools:check:levelban $hand $chan $tm]
+	set reason [join [lrange [split $arg] 5 end]]
+	set tm [lindex [split $arg] 4]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set tm [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 4 end]]
+		} 
+} elseif {[string equal -nocase "$global" "global"] && [matchattr $hand nm]} {
+	set gl 1
+	set tm [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 5 end]]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 4 end]]
+			} 
+	} else {
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 3 end]]
+	} else {
+	set reason [join [lrange [split $arg] 4 end]]
+		}
+	}
+} else {
+if {[regexp {^[-]} $tm]} {
+	set levelban 1
+	set level [blacktools:check:levelban $hand $chan $tm]
+	set reason [join [lrange [split $arg] 4 end]]
+	set tm [lindex [split $arg] 3]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set tm [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+		} 
+} elseif {[string equal -nocase "$global" "global"] && [matchattr $hand nm]} {
+	set gl 1
+	set tm [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 4 end]]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 3 end]]
+			} 
+	} elseif {[string equal -nocase "$global" "link"] && [matchattr $hand nm]} {
+	set link 1
+	set tm [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 4 end]]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 3 end]]
+			} 
+	} else {
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 2 end]]
+	} else {
+	set reason [join [lrange [split $arg] 3 end]]
+		}
+	}
+}
+	
+if {($return_time > "20160" || $return_time == "0")  && [matchattr $hand -|O $chan]} {
+	blacktools:tell $nick $char $hand $chan $chan1 b.6 none
+	return
+}
+if {$return_time == "-1"} {
+	set return_time $black(b:bantime)
+}
+if {[llength $level] > "1"} {
+	blacktools:tell $nick $char $hand $chan $chan1 gl.invalidlevel [string map {"0" ""} $level]
+	return
+}
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+if {$level != ""} {
+	userhost:act $b $nick "$hand:$level" $char $chan $chan1 $type $return_time "b" $reason $gl
+} else {
+if {$link == "1"} {
+	userhost:act $b $nick "$hand" $char $chan $chan1 $type $return_time $cmd $reason "2"
+	utimer 5 [list blacktools:link_ban [link:chan:get $chan] 0 $b $nick $hand $char $chan $chan1 $type $return_time "b" $reason 2]
+	return
+}
+	userhost:act $b $nick "$hand" $char $chan $chan1 $type $return_time "b" $reason $gl
+		}
+	}
+}
+
+
+stick {
+if {[matchattr $hand nmo|M $chan]} {
+	set stickb [lindex [split $arg] 1]
+	set tm [lindex [split $arg] 2]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 2 end]]
+} else {
+	set tm [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 3 end]]
+}
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $stickb] && [matchattr $hand nmo|MA $stickb]} {
+	set chan "$stickb"
+	set stickb [lindex [split $arg] 2]
+	set tm [lindex [split $arg] 3]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 3 end]]
+} else {
+	set tm [lindex [split $arg] 4]
+	set reason [join [lrange [split $arg] 4 end]] 
+	}
+}
+if {($return_time > "20160" || $return_time == "0")  && [matchattr $hand -|OS $stickb]} {
+	blacktools:tell $nick $char $hand $chan $chan1 b.6 none
+	return
+}
+
+if {$return_time == "-1"} {
+	set return_time $black(stick:bantime)
+}
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+	userhost:act $stickb $nick $hand $char $chan $chan1 $type $return_time "stick" $reason "0"
+	}
+}
+
+ub {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set ban [lindex [split $arg] 1]
+	set why [lindex [split $arg] 2]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $ban] && [matchattr $hand nmo|MAO $ban]} {
+	set chan "$ban"
+	set ban [lindex [split $arg] 2]
+	set why [lindex [split $arg] 3]
+}
+if {[regexp {^[0-9]} $ban]} {
+	set cmd "ub:id"
+} else {
+	set cmd "ub"
+}
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+if {[string equal -nocase $why "global"] && [matchattr $hand nm]} {
+	ub:process $ban $ban $nick $hand $char $chan $chan1 $type "1" $cmd "" "" ""
+} elseif {[string equal -nocase $why "link"] && [matchattr $hand nm]} {
+	ub:process $ban $ban $nick $hand $char $chan $chan1 $type "" "ub" "" "1" ""
+} else {
+	ub:process $ban $ban $nick $hand $char $chan $chan1 $type "" $cmd "" "" ""
+		}
+	}
+}
+
+sb {
+if {[matchattr $hand nmo|VMAO $chan]} {
+	set bhost [lindex [split $arg] 1]
+	set what [lindex [split $arg] 2]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $bhost] && [matchattr $hand nmo|MAO $bhost]} {
+	set chan "$bhost"
+	set bhost [lindex [split $arg] 2]
+	set what [lindex [split $arg] 3]
+	}
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+if {$bhost != ""} {
+if {[regexp {^[0-9]} $bhost]} {
+	sb:process $bhost $what $nick $hand $char $chan $chan1 $type "sb" "2"
+	return
+}
+if {![validchan $chan]} {
+	blacktools:tell $nick $char $hand $chan $chan1 gl.novalidchan none
+	return
+}
+if {[onchan $bhost $chan]} {
+	set bhost "$bhost![getchanhost $bhost $chan]"
+	sb:process $bhost $what $nick $hand $char $chan $chan1 $type "sb" "1"
+	return
+}
+
+if {[regexp {\*} $bhost]} {
+	sb:process $bhost $what $nick $hand $char $chan $chan1 $type "sb" "1"
+	return
+}
+	sb:process $bhost $what $nick $hand $char $chan $chan1 $type "sb" ""
+
+		} else { sb:process $bhost $what $nick $hand $char $chan $chan1 $type "sb" ""}
+	}
+}
+
+banlist {
+if {[matchattr $hand nmo|AOM $chan]} {
+	set user [lindex [split $arg] 1]
+	set next [lindex [split $arg] 2]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $user] && [matchattr $hand nmo|MASO $user]} {
+	set chan "$user"
+	set user [lindex [split $arg] 2]
+	set next [lindex [split $arg] 3]
+		}
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+	banlist:process $nick $char $hand $chan $chan1 $user $type "banlist" $next
+	}
+}
+
+r {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set c [lindex [split $arg] 1]
+	set chan1 $chan
+if {$c != "" && [matchattr $hand nmo|AMO $c]} {
+	topic:refresh $nick $char $hand $c $chan1 $arg
+	return
+		}
+	topic:refresh $nick $char $hand $chan $chan1 $arg
+	}
+}
+
+man {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	set command [lindex [split $arg] 1]
+	set type 0
+	set chan1 $chan
+	man:process $nick $char $hand $chan $chan1 $type $command
+	}
+}
+
+auto {
+if {[matchattr $hand nmo|MA $chan]} {
+	set type 0
+	set chan1 "$chan"
+	set option [lindex [split $arg] 1]
+	set user [lindex [split $arg] 2]
+	set global [lindex [split $arg] 3]
+if {[regexp {^[&#]} $option] && [matchattr $hand nmo|MA $option] && ![string equal -nocase $global "-global"]} {
+	set chan "$option"
+	set option [lindex [split $arg] 2]
+	set user [lindex [split $arg] 3]
+	set global [lindex [split $arg] 4]
+		}
+	auto:process $nick $char $hand $chan $chan1 $user $option $global $type 
+	}
+}
+
+
+antipub {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 0
+	set chan1 "$chan"
+	set why [lindex [split $arg] 1]
+	set except [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 2]
+	set except [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+}
+	prot:module:process $nick $char $hand $chan $chan1 $why $except $type $number "antipub"
+	}
+}
+
+private {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 0
+	set chan1 "$chan"
+	set why [lindex [split $arg] 1]
+	set user [lindex [split $arg] 2]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $chan]} {
+	set chan "$why"
+	set why [lindex [split $arg] 2]
+	set user [lindex [split $arg] 3]
+		}
+	private:process $nick $char $hand $chan $chan1 $why $user $type
+	}
+}
+
+tcl {
+if {[matchattr $hand n]} {
+	set type 0
+	set chan1 "$chan"
+	set the_script [lindex [split $arg] 2]
+	set who [lindex [split $arg] 1]
+	tcl:process $nick $char $hand $chan $chan1 $type $the_script $who
+	}
+}
+
+h {
+if {[matchattr $hand nmo|MSOAV $chan]} {
+	set chan1 "$chan"
+	set type 0
+	set command [lindex [split $arg] 1]
+	
+if {[setting:get $chan nextshortcmd]} {
+	helpedpublic:process $nick $char $hand $chan $chan1 $command 0
+	return
+}
+	h:process $nick $char $hand $chan $chan1 $command $type
+	}
+}
+
+ignore {
+if {[matchattr $hand nmo|M $chan]} {
+	set chan1 "$chan"
+	set type 0
+	set what [lindex [split $arg] 1]
+	set mask [lindex [split $arg] 2]
+	set time [lindex [split $arg] 3]	
+	set reason [join [lrange [split $arg] 4 end]]
+if {![regexp {^[0-9]} $time]} {
+	set reason [join [lrange [split $arg] 3 end]]
+		}
+	ignore:process $nick $char $hand $chan $chan1 $what $mask $time $reason $type
+	}
+}
+
+
+idle {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 0
+	set chan1 "$chan"
+	set why [lindex [split $arg] 1]
+	set user [lindex [split $arg] 2]
+	set host [lindex [split $arg] 3]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|- $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 2]
+	set user [lindex [split $arg] 3]
+	set host [lindex [split $arg] 4]
+		}
+	antidle:process $why $type $user $char $nick $hand $chan $chan1
+	}
+}
+
+version {
+if {[matchattr $hand nmo|MASOV $chan]} {
+	set cmd_status [btcmd:status $chan $hand "version" 0]
+	set text [lindex [split $arg] 1]
+if {$cmd_status == "1"} { 
+	return 
+}
+	set chan1 "$chan"
+	version:process $nick $char $hand $chan $chan1 $text
+	}
+}
+
+stats {
+if {[matchattr $hand nmo|MA $chan]} {
+	set type 0
+	set chan1 "$chan"
+	set user [lindex [split $arg] 1]
+	set option [lindex [split $arg] 2]
+if {[regexp {^[&#]} $user] && [matchattr $hand nmo|MAOV $user]} {
+	set chan "$user"
+	set user [lindex [split $arg] 2]
+	set option [lindex [split $arg] 3]
+}
+	stats:process $nick $char $hand $chan $chan1 $user $option $type
+	}
+}
+
+chat {
+if {[matchattr $hand nm]} {
+	set cmd_status [btcmd:status $chan $hand "chat" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chan1 $chan
+	*ctcp:CHAT $nick $char $hand $botnick CHAT $arg
+	blacktools:tell $nick $char $hand $chan $chan1 chat.1 none
+	} 
+}
+
+seen {
+	set type 0
+	set wseen [lindex [split $arg] 1]
+	set chan1 "$chan"
+if {[regexp {^[&#]} $wseen]} {
+	set chan1 "$chan"
+	set chan "$wseen"
+	set wseen [lindex [split $arg] 2]
+	}
+	seen:process $nick "$char:$host" $hand $chan $chan1 $wseen $type
+}
+
+limit {
+if {[matchattr $hand nmo|M $chan]} {
+	set why [lindex [split $arg] 1]
+	set lm [lindex [split $arg] 2]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 2]
+	set lm [lindex [split $arg] 3]
+		}
+	limit:process $nick $char $hand $chan $chan1 $why $lm $type
+	}
+}
+
+bt {
+if {[matchattr $hand nm]} {
+	set chan1 "$chan"
+	set type 0
+	set who [lindex [split $arg] 1]
+	set message [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+	broadcast:process $nick $char $hand $chan $chan1 $who $message $number $type
+	}
+}
+
+badchan {
+if {[matchattr $hand nmo|M $chan]} {
+	set why [lindex [split $arg] 1]
+	set type1 0
+	set chan1 "$chan"
+	set bdchan [lindex [split $arg] 2]
+	set type [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 3 end]]
+if {[string equal -nocase $type "global"]} {
+	set reason [join [lrange [split $arg] 4 end]]
+}
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 2]
+	set bdchan [lindex [split $arg] 3]
+	set type [lindex [split $arg] 4]
+	set reason [join [lrange [split $arg] 4 end]]
+if {[string equal -nocase $type "global"]} {
+	set reason [join [lrange [split $arg] 5 end]]
+	}
+}
+	badchan:process $nick $char $hand $chan $chan1 $why $bdchan $type1 $type $reason
+	}
+}
+
+us {
+if {[matchattr $hand nmo|MA $chan]} {
+	set type 0
+	set chan1 "$chan"
+	set users [lindex [split $arg] 1]
+if {[regexp {^[&#]} $users] && [matchattr $hand nmo|MA $users]} {
+	set chan "$users"
+	set users [lindex [split $arg] 2]
+		}
+	us:process $nick $char $hand $chan $chan1 $users $type
+	}
+} 
+
+s {
+if {[matchattr $hand nmo|MA $chan]} {
+	set type 0
+	set chan1 "$chan"
+	set user [lindex [split $arg] 1]
+	set suspend_time [lindex [split $arg] 2]
+	set suspend_reason [join [lrange [split $arg] 3 end]]
+if {![regexp {^[0-9]} $suspend_time]} {
+	set suspend_reason [join [lrange [split $arg] 2 end]]
+}
+if {[regexp {^[&#]} $user] && [matchattr $hand nmo|MA $user]} {
+	set chan "$user"
+	set user [lindex [split $arg] 2]
+	set suspend_time [lindex [split $arg] 3]
+	set suspend_reason [join [lrange [split $arg] 4 end]]
+if {![regexp {^[0-9]} $suspend_time]} {
+	set suspend_reason [join [lrange [split $arg] 3 end]]
+}
+		}
+	s:process $nick $char $hand $chan $chan1 $user $type $suspend_time $suspend_reason
+	}
+}
+
+info {
+if {[matchattr $hand nmo|MASOV $chan]} {
+	set user [lindex [split $arg] 1]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $user] && [matchattr $hand nmo|MASO $user] && ([lindex [split $arg] 2] == "")} {
+	set chan $user
+	info:process:chan $nick $char $hand $chan $chan1
+	return
+}
+
+if {[regexp {^[&#]} $user] && [matchattr $hand nmo|MASOV $chan]} {
+	set chan "$user"
+	set user [lindex [split $arg] 2]
+}
+	info:process $nick $char $hand $chan $chan1 $user $type
+	}
+}
+
+channels {
+if {[matchattr $hand nmo]} {
+	set chan1 "$chan"
+	channels:process $nick $char $hand $chan $chan1
+	}
+}
+
+
+userlist {
+if {[matchattr $hand nmo|MASOV $chan]} {
+	set level [lindex [split $arg] 1]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $level] && [matchattr $hand nmo|MASOV $level]} {
+	set chan "$level"
+	set level [lindex [split $arg] 2]
+if {![validchan $chan]} {
+	blacktools:tell $nick $char $hand $chan $chan1 gl.novalidchan none
+	return
+	}
+} 
+	userlist:execute $hand $char $level $chan $chan1 $nick $type
+	}
+}
+
+chuser {
+if {[matchattr $hand nmo|M $chan]} {
+	set user [lindex [split $arg] 1]
+	set type 0	
+	set chan1 "$chan"
+	set chandle [lindex [split $arg] 2]
+	chuser:process $nick $char $hand $chan $chan1 $user $chandle $type
+	}
+}
+
+
+delhost {
+if {[matchattr $hand nmo|MA $chan]} {
+	set user [lindex [split $arg] 1]
+	set type 0
+	set chan1 "$chan"
+	set hosts [join [lrange [split $arg] 2 end]]
+	delhost:process $nick $char $hand $chan $chan1 $user $hosts $type
+	}
+}
+
+addhost {
+if {[matchattr $hand nmo|MA $chan]} {
+	set type 0
+	set chan1 "$chan"
+	set user [lindex [split $arg] 1]
+	set hosts [join [lrange [split $arg] 2 end]]
+	addhost:process $nick $char $hand $chan $chan1 $user $hosts $type
+	}
+}
+
+del {
+if {[matchattr $hand nmo|M $chan]} {
+	set args [lrange [split $arg] 1 end]
+	set type 0
+	set chan1 "$chan"
+	del:process $nick $char $hand $chan $chan1 $args $type
+	}
+}
+
+
+delacc {
+if {[matchattr $hand nmo|MA $chan]} {
+	set args [lrange [split $arg] 1 end]
+	set type 0
+	set chan1 "$chan"
+	set c [lindex [split $arg] 1]
+if {[regexp {^[&#]} $c] && [matchattr $hand nmo|AM $c]} {
+	set chan "$c"
+	set args [lrange [split $arg] 2 end]
+}
+foreach user $args {
+	delacc:process $nick $char $hand $chan $chan1 $user $type
+		}
+	}
+}
+
+add {
+if {[matchattr $hand nmo|MA $chan]} {
+	set level [lindex [split $arg] 1]
+	set type 0
+	set chan1 "$chan"
+	set args [lrange [split $arg] 2 end]
+	set handle ""
+	set uhost ""
+if {[regexp {^[&#]} $level] && [matchattr $hand nmo|MA $level]} {
+	set chan "$level"
+	set level [lindex [split $arg] 2]
+	set args [lrange [split $arg] 3 end]
+}
+if {$args != ""} {
+if {[string equal -nocase $level [blacktools:getlevelname 9 $hand]]} {
+	set user [lindex $args 0]
+	set reason [join [lrange $args 1 end]]
+if {$user != ""} {
+if {[validchan $chan] && [onchan $user $chan]} {
+	set handle [nick2hand $user]
+	set hosts [getchanhost $user $chan]
+	set uhost [return_mask $black(hostdefaultadd) $hosts $user]
+	add:process $user $uhost $handle $level $hand $char $chan $chan1 $nick $type "add" $reason "ban"
+} else {
+if {![string is alnum $user]} {
+	blacktools:tell $nick $char $hand $chan $chan1 add.18 none
+	continue
+}
+	add:process $user $uhost $handle $level $hand $char $chan $chan1 $nick $type "add" $reason "ban"
+		}
+	}
+	return
+}
+
+foreach user $args {
+if {$user != ""} {
+if {[validchan $chan] && [onchan $user $chan]} {
+	set handle [nick2hand $user]
+	set hosts [getchanhost $user $chan]
+	set uhost [return_mask $black(hostdefaultadd) $hosts $user]
+	add:process $user $uhost $handle $level $hand $char $chan $chan1 $nick $type "add" "" ""
+	continue
+} else {
+if {![string is alnum $user]} {
+	blacktools:tell $nick $char $hand $chan $chan1 add.18 none
+	continue
+}
+	add:process $user $uhost $handle $level $hand $char $chan $chan1 $nick $type "add" "" ""
+					}
+				}
+			}
+		} else {  add:process "" $uhost $handle $level $hand $char $chan $chan1 $nick $type "add" "" "" }	
+	}
+}
+
+unsuspend {
+if {[matchattr $hand nmo]} {
+	set cmd_status [btcmd:status $chan $hand "unsuspend" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chans [lindex [split $arg] 1]
+	set chan1 "$chan"
+if {$chans == ""} {blacktools:tell $nick $char $hand $chan $chan1 gl.instr_nick "unsuspend"
+	return
+}
+
+if {![regexp {^[&#]} $chans]} {
+	blacktools:tell $nick $char $hand $chan $chan1 gl.novalidchan none
+	return
+}
+ 
+if {![validchan $chans]} { blacktools:tell $nick $char $hand $chan $chan1 gl.novalidchan none
+	return
+}
+
+if {![channel get $chans inactive]} {
+	blacktools:tell $nick $char $hand $chan $chan1 unsuspend.3 $chans
+	return
+}
+	channel set $chans -inactive
+	blacktools:tell $nick $char $hand $chan $chan1 unsuspend.4 $chans
+	}
+}
+
+suspend {
+if {[matchattr $hand nmo]} {
+	set cmd_status [btcmd:status $chan $hand "suspend" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chans [lindex [split $arg] 1]
+	set reason [join [lrange [split $arg] 2 end]]
+	set chan1 "$chan"
+if {$chans == ""} {blacktools:tell $nick $char $hand $chan $chan1 gl.instr_nick "suspend"
+	return
+}
+if {![regexp {^[&#]} $chans]} {
+	blacktools:tell $nick $char $hand $chan $chan1 gl.novalidchan none
+	return
+}
+if {![validchan $chans]} { blacktools:tell $nick $char $hand $chan $chan1 gl.novalidchan none
+	return
+}
+
+if {[channel get $chans inactive]} {
+	blacktools:tell $nick $char $hand $chan $chan1 suspend.3 $chans 
+	return
+}
+	channel set $chans +inactive
+if {$reason == ""} { set reason "N/A" }
+	suspendchan:note $hand $chans $reason
+	blacktools:tell $nick $char $hand $chan $chan1 suspend.4 $chans 
+	}
+}
+
+delchan {
+if {[matchattr $hand nmo]} {
+	set cmd_status [btcmd:status $chan $hand "delchan" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chans [lindex [split $arg] 1]
+	set reason [join [lrange [split $arg] 2 end]]
+	set chan1 "$chan"
+if {$chans == ""} {
+	blacktools:tell $nick $char $hand $chan $chan1 gl.instr_nick "delchan"
+	return
+}
+if {![regexp {^[&#]} $chans]} {
+	blacktools:tell $nick $char $hand $chan $chan1 gl.novalidchan none 
+	return
+} 
+
+if {![validchan $chans]} { blacktools:tell $nick $char $hand $chan $chan1 gl.novalidchan none
+	return
+}
+
+	set getlang [string tolower [getuser $hand XTRA OUTPUT_LANG]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+
+if {!($black(homechan) == "") && ![string equal -nocase $black(homechan) "#no_home_chan"]} {
+if {[string equal -nocase $chans $black(homechan)]} {
+	blacktools:tell $nick $char $hand $chan $chan1 delchan.5 $chans
+	return
+	}
+}
+	channel remove $chans
+	delchan:all $chans
+if {$reason == ""} { set reason "N/A" }
+	delchan:note $hand $chans $reason
+	blacktools:tell $nick $char $hand $chan $chan1 delchan.3 $chans
+	}
+}
+
+addchan {
+if {[matchattr $hand nmo]} {
+	set cmd_status [btcmd:status $chan $hand "addchan" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chans [lindex [split $arg] 1]
+	set key [lindex [split $arg] 2]
+	set chan1 $chan
+if {$chans == ""} {
+	blacktools:tell $nick $char $hand $chan $chan1 gl.instr_nick "addchan"
+	return
+}
+if {![regexp {^[&#]} $chans]} {	
+	blacktools:tell $nick $char $hand $chan $chan1 gl.novalidchan none
+	return
+} 
+
+if {[validchan $chans]} {
+	blacktools:tell $nick $char $hand $chan $chan1 addchan.2 $chans
+	return
+} else {
+	channel add $chans
+	blacktools:tell $nick $char $hand $chan $chan1 addchan.3 $chans
+if {$key != ""} {
+	putquick "JOIN $chans :$key"
+	channel set $chans chanmode "+ntk $key"
+			}		
+		}
+	}
+}
+
+die {
+if {[matchattr $hand nm]} {
+	set cmd_status [btcmd:status $chan $hand "die" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chan1 "$chan"
+	set reason [join [lrange [split $arg] 1 end]]
+	set getlang [string tolower [getuser $hand XTRA OUTPUT_LANG]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+	blacktools:tell $nick $char $hand $chan $chan1 die.1 none
+if {$reason == ""} {
+	set text [black:color:set "" $black(say.$getlang.die.2)]
+	set reply [join $text]
+	set reason $reply
+}
+	utimer 3 [list die $reason]
+	}
+}
+
+jump {
+if {[matchattr $hand nm]} {
+	set cmd_status [btcmd:status $chan $hand "jump" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chan1 "$chan"
+	set serv [lindex [split $arg] 1]
+if {$serv == ""} {
+	blacktools:tell $nick $char $hand $chan $chan1 jump.1 "..."
+	utimer 3 [list jump]
+} else {
+	blacktools:tell $nick $char $hand $chan $chan1 jump.1 "\002$serv\002"
+	utimer 3 [list jump $serv]
+		}	
+	}
+}
+
+save {
+if {[matchattr $hand nm]} {
+	set cmd_status [btcmd:status $chan $hand "save" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chan1 "$chan"
+	blacktools:tell $nick $char $hand $chan $chan1 save.1 none
+	save
+	}
+}
+
+restart {
+if {[matchattr $hand nm]} {
+	set cmd_status [btcmd:status $chan $hand "restart" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chan1 "$chan"
+	blacktools:tell $nick $char $hand $chan $chan1 restart.1 none
+	utimer 3 [list restart]
+	}
+}
+
+rehash {
+if {[matchattr $hand nm]} {
+	set cmd_status [btcmd:status $chan $hand "rehash" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chan1 "$chan"
+	blacktools:tell $nick $char $hand $chan $chan1 rehash.1 none
+	rehash
+	}
+}
+
+nick {
+if {[matchattr $hand nm]} {
+	set thenick [lindex [split $arg] 1]
+	set chan1 $chan
+	set type 0
+	tempnick:process $thenick $nick $char $hand $chan $chan1 $type
+	}
+}
+
+msg {
+if {[matchattr $hand nmo|- $chan]} {
+	set who [lindex [split $arg] 1]	
+	set chan1 "$chan"
+	set type 0
+	set msg [join [lrange [split $arg] 2 end]]
+	msg:process $nick $char $hand $chan $chan1 $who $msg $type
+	}
+}
+
+omsg {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set who [lindex [split $arg] 1]	
+	set chan1 "$chan"
+	set type 0
+	set msg [join [lrange [split $arg] 2 end]]
+if {![regexp {^[&#]} $who] && ![string equal -nocase $who "all"]} {
+	set msg [join [lrange [split $arg] 1 end]]
+	set who $chan
+}
+	omsg:process $nick $char $hand $chan $chan1 $who $msg $type
+	}
+}
+
+set {
+if {[matchattr $hand nmo|M $chan]} {
+	set flags [lindex [split $arg] 1]
+	set type [join [lrange [split $arg] 2 end]]
+	set type1 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $flags] && [matchattr $hand nmo|M $flags]} {
+	set chan "$flags"
+	set flags [lindex [split $arg] 2]
+	set type [join [lrange [split $arg] 3 end]]
+}
+if {[matchattr $hand mn]} {
+if {[string equal -nocase "global" $flags]} {
+	set chan "$flags"
+	set flags [lindex [split $arg] 2]
+	set type [join [lrange [split $arg] 3 end]]
+	foreach c [channels] {
+	set:process $nick $char $hand $c $chan1 $flags $type $type1	
+		}
+		return
+	}
+}
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+	set:process $nick $char $hand $chan $chan1 $flags $type $type1
+	}
+}
+
+mode {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set modes [lindex [split $arg] 1]
+	set hosts [lindex [split $arg] 2]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $modes] && [matchattr $hand nmo|OMA $modes]} {
+	set chan "$modes"
+	set modes [lindex [split $arg] 2]
+	set hosts [lindex [split $arg] 3]
+		}
+	mode:process $nick $char $hand $chan $chan1 $modes $type $hosts
+	}
+}
+
+cycle {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set reason [join [lrange [split $arg] 1 end]]	
+	set c [lindex [split $arg] 1]
+	set chan1 "$chan"
+if {[regexp {^[&#]} $c] && [matchattr $hand nmo|OMA $c]} {
+	set chan "$c"
+	set reason [join [lrange [split $arg] 2 end]]
+}
+	cycle:process $nick $char $hand $chan $chan1 $reason
+	}
+}
+
+purge {
+if {[matchattr $hand -|M $chan]} {
+	set c [lindex [split $arg] 1]
+	set reason [join [lrange [split $arg] 1 end]]
+	set chan1 "$chan"
+if {[regexp {^[&#]} $c] && [matchattr $hand -|M $c]} {
+	set chan "$c"
+	set reason [join [lrange [split $arg] 2 end]]
+}
+if {$reason == ""} {
+	blacktools:tell $nick $char $hand $chan $chan1 purge.1 none
+	return
+}
+	purge:process $nick $char $hand $chan $chan1 $reason
+	}
+}
+
+broadcast {
+if {[matchattr $hand nm]} {
+	set text [join [lrange [split $arg] 1 end]]	
+	set chan1 "$chan"
+	set type 0
+	broadcast:cmd:process $nick $char $hand $chan $chan1 $text $type
+	}
+}
+
+act {
+if {[matchattr $hand nmo|MA $chan]} {
+	set text [join [lrange [split $arg] 1 end]]
+	set c [lindex [split $arg] 1]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $c] && [matchattr $hand nmo|AM $c]} {
+	set chan "$c"
+	set text [join [lrange [split $arg] 2 end]]
+}
+	act:process $nick $char $hand $chan $chan1 $text $type
+	}
+}
+
+say {
+if {[matchattr $hand nmo|MA $chan]} {
+	set text [join [lrange [split $arg] 1 end]]
+	set c [lindex [split $arg] 1]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $c] && [matchattr $hand nmo|MA $c]} {
+	set chan "$c"
+	set text [join [lrange [split $arg] 2 end]]
+}
+	say:process $nick $char $hand $chan $chan1 $text $type
+	}
+}
+
+v {
+if {[matchattr $hand nmo|VOMA $chan]} {
+	set voicex [join [lrange [split $arg] 1 end]]
+	set c [lindex [split $arg] 1]
+	set chan1 "$chan"
+if {[regexp {^[&#]} $c] && [matchattr $hand nmo|VOMA $c]} {
+	set chan "$c"
+	set voicex [join [lrange [split $arg] 2 end]]
+}
+	v:process $nick $char $hand $chan $chan1 $voicex
+	}
+}
+
+ho {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set hopex [join [lrange [split $arg] 1 end]]
+	set c [lindex [split $arg] 1]
+	set chan1 "$chan"
+if {[regexp {^[&#]} $c] && [matchattr $hand nmo|OMA $c]} {
+	set chan "$c"
+	set hopex [join [lrange [split $arg] 2 end]]
+		}
+	ho:process $nick $char $hand $chan $chan1 $hopex
+	}
+}
+
+o {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set opex [join [lrange [split $arg] 1 end]]
+	set c [lindex [split $arg] 1]
+	set chan1 "$chan"
+if {[regexp {^[&#]} $c] && [matchattr $hand nmo|OMA $c]} {
+	set chan "$c"
+	set opex [join [lrange [split $arg] 2 end]]
+		}
+	o:process $nick $char $hand $chan $chan1 $opex
+	}
+}
+
+uptime {
+if {[matchattr $hand nmo]} {
+	set cmd_status [btcmd:status $chan $hand "uptime" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+	set getlang [string tolower [getuser $hand XTRA OUTPUT_LANG]]
+if {[matchattr $hand q]} { blacktools:tell $nick $char $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $char $hand $chan $chan1 gl.suspend none
+	return
+}
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+	set chan1 "$chan"
+	set up [return_time_2 $getlang [expr [unixtime] - $uptime]]
+	set on [return_time_2 $getlang [expr [unixtime] - ${server-online}]]
+	catch {exec uptime} shelluptime
+	set file [open $black(uptime_file) "r"]
+	set data [read -nonewline $file]
+	close $file
+if {$data == ""} {
+	set read_maxup "-"
+	set read_maxon "-"
+} else {
+	set read_maxup [return_time_2 $getlang [lindex [split $data] 0]]
+	set read_maxon [return_time_2 $getlang [lindex [split $data] 1]]
+}
+	blacktools:tell $nick $char $hand $chan $chan1 maxup.1 "$up $read_maxup"
+	blacktools:tell $nick $char $hand $chan $chan1 maxon.1 "$on $read_maxon"
+	blacktools:tell $nick $char $hand $chan $chan1 uptime.2 $shelluptime
+	blacktools:tell $nick $char $hand $chan $chan1 uptime.3 $server
+	}
+}
+
+status {
+if {[matchattr $hand nmo|- $chan]} {
+	status:process $nick $char $hand $chan
+	}
+}
+
+t {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set topics [join [lrange [split $arg] 1 end]]
+	set c [lindex [split $arg] 1]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $c] && [matchattr $hand nmo|OMA $c]} {
+	set chan "$c"	
+	set topics [join [lrange [split $arg] 2 end]]
+		}
+	t:process $nick $char $hand $chan $chan1 $topics $type
+	}
+}
+
+k {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set knick [lindex [split $arg] 1]
+	set type 0
+	set reason [join [lrange [split $arg] 2 end]]
+	set handle [nick2hand $knick]
+	set chan1 "$chan"
+if {[regexp {^[&#]} $knick] && [matchattr $hand nmo|MAO $knick]} {
+	set chan "$knick"
+	set knick [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+}
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+if {$knick != ""} {
+	k:process $knick $nick $hand $char $reason $chan $chan1 $type
+		} else {k:process $knick $nick $hand $char $reason $chan $chan1 $type}
+	}
+}
+
+w {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set wnick [lindex [split $arg] 1]
+	set type 0
+	set handle [nick2hand $wnick]
+	set chan1 "$chan"
+if {[regexp {^[&#]} $wnick] && [matchattr $hand nmo|MAO $wnick]} {
+	set chan "$wnick"
+	set wnick [lindex [split $arg] 2]
+}
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+if {$wnick != ""} {
+	w:process $wnick $nick $hand $char $chan $chan1 $type
+		} else { w:process $wnick $nick $hand $char $chan $chan1 $type }
+	}
+}
+
+ungag {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set gagger [lindex [split $arg] 1]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $gagger] && [matchattr $hand nmo|MAO $gagger]} {
+	set chan "$gagger"
+	set gagger [lindex [split $arg] 2]
+}
+
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+
+if {$gagger != ""} {
+	ungag:process $gagger $nick $hand $char $chan $chan1 $type
+		} else { ungag:process $gagger $nick $hand $char $chan $chan1 $type }
+	}
+}
+
+gag {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set gagger [lindex [split $arg] 1]
+	set time [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+	set type 0
+	set handle [nick2hand $gagger]
+	set chan1 "$chan"
+	set return_time [time_return_minute $time]
+if {$return_time == "-1"} {
+	set reason [lrange [split $arg] 2 end]
+	set time [setting:get $chan gag-bantime]
+if {$time == ""} {
+	set time $black(gag:bantime)
+	}
+}
+if {[regexp {^[&#]} $gagger] && [matchattr $hand nmo|MAO $gagger]} {
+	set chan "$gagger"
+	set gagger [lindex [split $arg] 2]
+	set time [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 4 end]]
+	set return_time [time_return_minute $time]
+if {$return_time == "-1"} {
+	set reason [lrange [split $arg] 3 end]
+	set time [setting:get $chan gag-bantime]
+if {$time == ""} {
+	set time $black(gag:bantime)
+		}
+	}
+}
+
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+
+if {$gagger != ""} {
+	gag:process $gagger $time $reason $nick "$hand:GAG" $char $chan $chan1 $type
+	} else { gag:process $gagger $time $reason $nick $hand $char $chan $chan1 $type }
+	}
+}
+
+show {
+if {[matchattr $hand nmo|M $chan]} {
+	set wich [lindex [split $arg] 1]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $wich] && [matchattr $hand nmo|M $wich]} {
+	set chan "$wich"
+	set wich [lindex [split $arg] 2]	
+		}
+foreach c [channels] {
+	set backchan [join [setting:get $c backchan]]
+if {[string match -nocase $chan $backchan]} {
+	set chan "$c"
+	}
+}
+	show:process $nick $char $hand $chan $chan1 $wich $type
+	}
+}
+
+clonescan {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set why [lindex [split $arg] 1]
+	set type 0
+if {[matchattr $hand nmo|M $chan] && ($why != "") && ![regexp {^[&#]} $why]} {
+	set chan1 "$chan"
+	set clone [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+if {[regexp {^[&#]} $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 2]
+	set clone [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+}
+	prot:module:process $nick $char $hand $chan $chan1 $why $clone $type $number "clonescan"
+	return
+}
+	set c [lindex [split $arg] 1]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $c] && [matchattr $hand nmo|M $c]} {
+	set chan "$c"
+}
+	scanner:process $nick $char $hand $chan $chan1 $type
+	}
+}
+
+topwords {
+if {[matchattr $hand nmo|AOMV $chan]} {
+	set chan1 "$chan"
+	set cmd ""
+	set type 0
+	set next [lindex [split $arg] 1]
+if {[regexp {^[&#]} $next] && [matchattr $hand nmo|MAOV $next]} {
+	set chan $next
+	set next [lindex [split $arg] 2]
+	switch $next {
+reset {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 3]
+	set cmd "reset"
+		}	
+	}
+total {
+	set next [lindex [split $arg] 3]
+	set cmd "total"
+	}
+week {
+	set next [lindex [split $arg] 3]
+	set cmd "week"
+	}
+add {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 3]
+	set cmd "add"
+	}
+}	
+del {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 3]
+	set cmd "del"
+		}	
+	}
+list {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 3]
+	set cmd "list"
+	}	
+}
+default {
+if {[matchattr $hand nmo|MAOV $next]} {
+if {$next != "" && ![string equal -nocase $next "-next"]} {
+	set cmd $next
+	set next [lindex [split $arg] 3]
+	switch $next {
+	total {
+	set cmd "total:$cmd"
+	}
+	week {
+	set cmd "week:$cmd"
+	}
+	reset {
+	set cmd "reset:$cmd"
+					}
+	default {
+	set cmd "user:$cmd"
+						}
+					}
+				}
+			}
+		}
+	}
+}
+if {$cmd == ""} {
+	switch $next {
+reset {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 2]
+	set cmd "reset"
+		}	
+	}
+total {
+	set next [lindex [split $arg] 2]
+	set cmd "total"
+	}
+week {
+	set next [lindex [split $arg] 2]
+	set cmd "week"
+	}
+add {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 2]
+	set cmd "add"
+	}
+}	
+del {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 2]
+	set cmd "del"
+		}	
+	}
+list {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 2]
+	set cmd "list"
+	}	
+}
+default {
+if {$next != "" && ![string equal -nocase $next "-next"]} {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	set cmd $next
+	set next [lindex [split $arg] 2]
+	switch $next {
+	total {
+	set cmd "total:$cmd"
+	}
+	week {
+	set cmd "week:$cmd"
+	}
+	reset {
+	set cmd "reset:$cmd"
+					}
+	default {
+	set cmd "user:$cmd"
+						}
+					}
+				}
+			}
+		}
+	}
+}
+	topwords:process $nick $char $hand $chan $chan1 $cmd $type $next
+	}	
+}
+
+myset {
+if {[matchattr $hand nmo|VAOM $chan]} {
+	set type 0
+	set chan1 "$chan"	
+	set flags [lindex [split $arg] 1]
+	set typez [lindex [split $arg] 2]
+	set chan2 [lindex [split $arg] 3]
+	set arg [join [lrange [split $arg] 2 end]]
+	myset:process $nick $char $hand $chan $chan1 $flags $typez $type $chan2 $arg
+	}
+}
+
+timer {
+if {[matchattr $hand nm]} {
+	set chan1 $chan
+	set cmd [lindex [split $arg] 1]
+	set pid [lindex [split $arg] 2]
+	set timer_args [join [lrange [split $arg] 3 end]]
+	set type 0
+	timer:process $nick $char $hand $chan $chan1 $cmd $pid $timer_args $type
+	}
+}
+
+i {
+if {[matchattr $hand nmo|VAOM $chan]} {
+	set type 0
+	set chan1 "$chan"
+	set inick [lindex [split $arg] 1]
+if {[regexp {^[&#]} $inick] && [matchattr $hand nmo|VAOM $inick]} {
+	set chan "$inick"
+	set inick [lindex [split $arg] 2]
+}
+	i:process $nick $char $hand $chan $chan1 $inick $type
+	}
+}
+
+badword {
+if {[matchattr $hand nmo|M $chan]} {
+	set why [lindex [split $arg] 1]
+	set type 0
+	set chan1 "$chan"
+	set bdword [join [lrange [split $arg] 2 end]]
+	set bdnumber [lindex [split $arg] 2]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 2]
+	set bdnumber [lindex [split $arg] 3]
+	set bdword [join [lrange [split $arg] 3 end]]
+		}
+	antibadword:command:process $nick $char $hand $chan $chan1 $why $bdword $bdnumber $type
+	}
+}
+
+next {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set option [lindex [split $arg] 1]
+	set chan1 $chan
+		nextpublic:process $nick $char $hand $chan $chan1 $option
+	}
+}
+
+helped {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set user [lindex [split $arg] 1]
+	set chan1 $chan
+	set type 0
+	helpedpublic:process $nick $char $hand $chan $chan1 $user $type
+	}
+}
+
+noidle {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set user [lindex [split $arg] 1]
+	set chan1 $chan
+	set type 0
+	noidlepublic:process $nick $char $hand $chan $chan1 $user $type
+	}
+}
+
+skip {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set user [lindex [split $arg] 1]
+	set chan1 $chan
+	set type 0
+	skippublic:process $nick $char $hand $chan $chan1 $user	$type
+			}
+		}		
+	}
+}
+
+##############
+#########################################################################
+##   END                                                               ##
+#########################################################################

+ 1236 - 0
BlackTools2.5.2/Commands/BT.H.tcl

@@ -0,0 +1,1236 @@
+#########################################################################
+##          BlackTools - The Ultimate Channel Control Script           ##
+##                    One TCL. One smart Eggdrop                       ##
+#########################################################################
+#############################   HCMDS TCL   #############################
+#########################################################################
+##						                       ##
+##   BlackTools  : http://blacktools.tclscripts.net	               ##
+##   Bugs report : http://www.tclscripts.net/	                       ##
+##   GitHub page : https://github.com/tclscripts/BlackToolS-TCL-script ##
+##   Online Help : irc://irc.undernet.org/tcl-help 	          	       ##
+##                 #TCL-HELP / UnderNet                                ##
+##                 You can ask in english or romanian                  ##
+##					                               ##
+#########################################################################
+
+proc h:process {nick host hand chan chan1 command type} {
+global black botnick config lastbind
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+	set cmd_status [btcmd:status $chan $hand "h" 0]
+if {$cmd_status == "1"} {
+	return
+}
+	set number [scan $black(antiflood:cmd) %\[^:\]]
+	set show_cmds ""
+	set timer [scan $black(antiflood:cmd) %*\[^:\]:%s]
+	set split_lastbind [split $lastbind ""]
+	set charbind [lindex $split_lastbind 0]
+if {[lsearch -exact $black(cmdchar) $charbind] < 0} {
+	set charbind ""
+}
+	set replace(%botnick%) $botnick
+if {[string equal $lastbind "*"]} { set charbind "" }
+if {[string equal -nocase "**" $lastbind]} { set charbind "$botnick " }
+	set replace(%char%) $charbind
+if {[info exists black(flood:activ:$host)]} {
+foreach tmr [utimers] {
+if {[string match "*black(flood:activ:$host)*" [join [lindex $tmr 1]]]} {
+	set time [lindex $tmr 0]
+	}
+}
+	blacktools:tell $nick $host $hand $chan $chan1 h.16 "$time h"
+	return
+}
+	foreach tmr [utimers] {
+if {[string match "*black(floodcmd:$host:$chan)*" [join [lindex $tmr 1]]]} {
+	killutimer [lindex $tmr 2]
+	}
+}
+
+if {![info exists black(floodcmd:$host:$chan)]} { 
+	set black(floodcmd:$host:$chan) 0 
+}
+	incr black(floodcmd:$host:$chan)
+	utimer $timer [list unset black(floodcmd:$host:$chan)]
+
+if {$black(floodcmd:$host:$chan) == "$number"} {
+	blacktools:tell $nick $host $hand $chan $chan1 h.16 "30 h"
+	set black(flood:activ:$host) 1
+	utimer 30 [list unset black(flood:activ:$host)]
+	return
+}
+	set replace(%chan%) $chan
+	set greeting [getuser $hand XTRA BT_WELCOME]
+	set chanlang [string tolower [setting:get $chan lang]]
+
+if {[matchattr $hand -|V $chan]} {
+	set access "VOICE"
+} elseif {[matchattr $hand -|O $chan]} {
+	set access "OP"
+} elseif {[matchattr $hand -|A $chan]} {
+	set access "ADMIN"
+} elseif {[matchattr $hand -|M $chan]} {
+	set access "MANAGER"
+} elseif {[matchattr $hand n]} {
+	set access "BOSS"
+} elseif {[matchattr $hand m]} {
+	set access "OWNER"
+} elseif  {[matchattr $hand o]} {
+	set access "MASTER"
+}
+
+if {$chanlang == ""} { set chanlang "[string tolower $black(default_lang)]" }
+if {$greeting == ""} {
+	set text1 [black:color:set "" $black(say.$chanlang.greeting.1)]
+	set reply1 [join $text1]
+	set text2 [black:color:set "" $black(say.$chanlang.greeting.2)]
+	set reply2 [join $text2]
+	set text3 [black:color:set "" $black(say.$chanlang.greeting.3)]
+	set reply3 [join $text3]
+	set text4 [black:color:set "" $black(say.$chanlang.greeting.4)]
+	set reply4 [join $text4]
+	set text5 [black:color:set "" $black(say.$chanlang.greeting.5)]
+	set reply5 [join $text5]
+	set text6 [black:color:set "" $black(say.$chanlang.greeting.6)]
+	set reply6 [join $text6]
+	putserv "PRIVMSG $nick :[string map [array get replace] $reply1]"
+	putserv "PRIVMSG $nick :[string map [array get replace] $reply2]"
+	putserv "PRIVMSG $nick :[string map [array get replace] $reply3]"
+	putserv "PRIVMSG $nick :[string map [array get replace] $reply4]"
+	putserv "PRIVMSG $nick :[string map [array get replace] $reply5]"
+	putserv "PRIVMSG $nick :[string map [array get replace] $reply6]"
+	setuser $hand XTRA BT_WELCOME 1
+	return
+}
+	set getlang [string tolower [getuser $hand XTRA OUTPUT_LANG]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+
+if {$command == ""} {
+	switch $access {
+
+	VOICE {
+	blacktools:tell $nick $host $hand $chan $chan1 h.5 $black(say.$getlang.level.6)
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.6 none
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.24 none
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.20 none
+		}
+	}
+}
+	OP {
+	blacktools:tell $nick $host $hand $chan $chan1 h.7 $black(say.$getlang.level.5)
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.8 none	
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.24 none
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.20 none
+		}
+	}	
+}
+
+	ADMIN {
+	blacktools:tell $nick $host $hand $chan $chan1 h.11 $black(say.$getlang.level.4)
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.12 none
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.23 none
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.19 none
+		}
+	}
+}
+
+	MANAGER {
+	blacktools:tell $nick $host $hand $chan $chan1 h.13 $black(say.$getlang.level.3)
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.14 none
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.22 none
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.18 none
+		}
+	}	
+}
+
+	OWNER {
+	blacktools:tell $nick $host $hand $chan $chan1 h.3 $black(say.$getlang.level.2)
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.4 none
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.21 none
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.17 none
+			}	
+		}	
+	}	
+	
+	MASTER {
+	blacktools:tell $nick $host $hand $chan $chan1 h.1 $black(say.$getlang.level.8)
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.25 none
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.27 none
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.26 none
+			}
+		}
+	}
+	
+	BOSS {
+	blacktools:tell $nick $host $hand $chan $chan1 h.1 $black(say.$getlang.level.1)
+	switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.4 none
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.21 none
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 h.17 none
+			}	
+		}
+	}
+}
+	return
+}
+
+switch -exact -- [string tolower $command] {
+
+	cmds {
+	switch $access {
+
+VOICE {
+	set cmds [string map [array get replace] $black(say.$getlang.cmdsvoice)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	continue
+} else { set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;"  }
+	lappend show_cmds [join $applycmd " "]
+}
+foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 330] {
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 $txt
+	}
+}	
+	
+OP {
+	set cmds [string map [array get replace] $black(say.$getlang.cmdsop)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	continue
+} else { set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;" }
+	lappend show_cmds [join $applycmd " "]
+}
+foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 330] {
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 $txt
+	}
+}
+
+ADMIN {
+	set cmds [string map [array get replace] $black(say.$getlang.cmdadmin)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	continue
+} else { set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;"  }
+	lappend show_cmds [join $applycmd " "]
+}
+foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 330] {
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 $txt
+	}
+}
+
+MANAGER {
+	set cmds [string map [array get replace] $black(say.$getlang.cmdmanager)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	set applycmd "\00300,14$thecmd [join $rest_of]\003"
+} else { set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;"  }
+	lappend show_cmds [join $applycmd " "]
+}
+foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 330] {
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 $txt
+	}
+}
+
+OWNER {
+	set cmds [string map [array get replace] $black(say.$getlang.cmdbossowner)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	set applycmd "\00300,14$thecmd [join $rest_of]\003"
+} else { set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;"  }
+	lappend show_cmds [join $applycmd " "]
+}
+foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 330] {
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 $txt
+	}
+}
+
+BOSS {
+	set cmds [string map [array get replace] $black(say.$getlang.cmdbossowner)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	set applycmd "\00300,14$thecmd [join $rest_of]\003"
+} else { 
+	set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;" 
+}												
+	lappend show_cmds [join $applycmd " "]
+}
+foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 330] {
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 $txt
+	}
+}
+	
+MASTER {
+	set cmds [string map [array get replace] $black(say.$getlang.cmdmaster)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	set applycmd "\00300,14$thecmd [join $rest_of]\003"
+} else { set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;"  }
+	lappend show_cmds [join $applycmd " "]
+}
+foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 330] {
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 $txt
+		}
+	}	
+}
+	switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.1 none
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.2 none
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.3 none
+		}
+	}
+}
+
+	ban {
+switch $access {
+
+VOICE {
+	set cmds [string map [array get replace] $black(say.$getlang.banvoice)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	continue
+} else { set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;"  }
+	lappend show_cmds [join $applycmd " "]
+}
+foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 450] {	
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 "$txt"
+	}
+}
+
+OP {
+	set cmds [string map [array get replace] $black(say.$getlang.banop)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	continue
+} else { set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;"  }
+	lappend show_cmds [join $applycmd " "]
+}
+foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 450] {	
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 "$txt"
+	}
+}
+
+ADMIN {
+	set cmds [string map [array get replace] $black(say.$getlang.banadmin)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	continue
+} else { set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;"  }
+	lappend show_cmds [join $applycmd " "]
+}
+foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 450] {	
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 "$txt"
+	}
+}
+
+
+MANAGER {
+	set cmds [string map [array get replace] $black(say.$getlang.banmanager)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	set applycmd "\00300,14$thecmd [join $rest_of]\003"
+} else { set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;"  }
+	lappend show_cmds [join $applycmd " "]
+}
+foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 450] {
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 "$txt"
+	}
+}
+
+OWNER {
+	set cmds [string map [array get replace] $black(say.$getlang.banbossowner)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	set applycmd "\00300,14$thecmd [join $rest_of]\003"
+} else { set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;"  }
+	lappend show_cmds [join $applycmd " "]
+}
+foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 440] {	
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 "$txt"
+	}
+}
+
+BOSS {
+	set cmds [string map [array get replace] $black(say.$getlang.banbossowner)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	set applycmd "\00300,14$thecmd [join $rest_of]\003"
+} else { set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;"  }
+	lappend show_cmds [join $applycmd " "]
+}
+foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 440] {	
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 "$txt"
+		}
+	}
+	
+MASTER {
+	set cmds [string map [array get replace] $black(say.$getlang.banmaster)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	set applycmd "\00300,14$thecmd [join $rest_of]\003"
+} else { set applycmd "\002$thecmd\002 [join $rest_of] ;" }
+	lappend show_cmds [join $applycmd " "]
+}
+foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 440] {	
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 "$txt"
+		}
+	}	
+}
+	switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.1 none
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.2 none
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.3 none
+		}
+	}
+}
+
+	add {
+	switch $access {
+ADMIN {
+	set cmds [string map [array get replace] $black(say.$getlang.addadmin)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	continue
+} else { set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;"  }
+	lappend show_cmds [join $applycmd " "]
+}
+foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 330] {
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 $txt
+	}
+}
+
+MASTER {
+	set cmds [string map [array get replace] $black(say.$getlang.addmaster)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	set applycmd "\00300,14$thecmd [join $rest_of]\003"
+} else { set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;"  }
+	lappend show_cmds [join $applycmd " "]
+}
+foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 330] {
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 $txt
+	}
+}
+
+MANAGER {
+	set cmds [string map [array get replace] $black(say.$getlang.addmanager)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	set applycmd "\00300,14$thecmd [join $rest_of]\003"
+} else { set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;"  }
+	lappend show_cmds [join $applycmd " "]
+}
+foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 330] {
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 $txt
+	}
+}
+
+OWNER {
+	set cmds [string map [array get replace] $black(say.$getlang.addowner)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	set applycmd "\00300,14$thecmd [join $rest_of]\003"
+} else { set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;"  }
+	lappend show_cmds [join $applycmd " "]
+}
+foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 330] {
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 $txt
+	}
+}
+
+BOSS {
+	set cmds [string map [array get replace] $black(say.$getlang.addbossowner)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	set applycmd "\00300,14$thecmd [join $rest_of]\003"
+} else { set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;"  }
+	lappend show_cmds [join $applycmd " "]
+}
+foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 330] {
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 $txt
+				}
+			}
+		}	
+	switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.1 none
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.2 none
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.3 none
+		}
+	}
+}
+
+	manager {
+if {$access == "MANAGER"} {
+	set cmds [string map [array get replace] $black(say.$getlang.hmanager.1)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	set applycmd "\00300,14$thecmd [join $rest_of]\003"
+} else { set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;"  }
+	lappend show_cmds [join $applycmd " "]
+}
+foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 330] {
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 $txt
+	}
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.1 none
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.2 none
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.3 none
+			}
+		}	
+	}
+}
+
+	master {
+if {$access == "MASTER"} {
+	set cmds [string map [array get replace] $black(say.$getlang.hmaster.1)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	set applycmd "\00300,14$thecmd [join $rest_of]\003"
+} else { set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;"  }
+	lappend show_cmds [join $applycmd " "]
+		}
+	foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 330] {	
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 "$txt"
+		}
+	switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.1 none
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.2 none
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.3 none
+				}
+			}
+		}
+	}
+	
+	owner {
+if {[matchattr $hand nm]} {
+	set cmds [string map [array get replace] $black(say.$getlang.hbossowner.1)]
+	set split_cmds [split $cmds ";"]
+foreach cmd $split_cmds {
+	set thecmd [lindex $cmd 0]
+	set rest_of [lrange $cmd 1 end]
+	set status [btcmd:status $chan $hand $thecmd 1]
+if {$status == "1"} {
+	set applycmd "\00300,14$thecmd [join $rest_of]\003"
+} else { set applycmd "[black:color 1 $hand $thecmd] [black:color 6 $hand [join $rest_of]] ;"  }
+	lappend show_cmds [join $applycmd " "]
+		}
+	}
+	foreach txt [h:wrap [string map [array get replace] [join $show_cmds]] 330] {	
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 "$txt"
+}
+	switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.1 none
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.2 none
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.3 none
+		}
+	}
+}
+
+btinfo {
+if {[matchattr $hand nmo|M $chan]} {
+	set btstr_list ""
+foreach setting $black(extra_flag) {
+if {$setting != ""} {
+if {[string equal -nocase $setting "chanlink"]} {
+	continue
+}
+if {([string equal -nocase $setting "invisible"] || [string equal -nocase $setting "forward"]) && [matchattr $hand mo|M $chan] && ![matchattr $hand n]} {
+	continue
+}
+if {[setting:get $chan $setting]} {
+	lappend btflags +[black:color 2 $hand $setting]
+	} else {
+	lappend btflags -[black:color 4 $hand $setting]
+		}
+	}
+}
+
+foreach setting $black(extra_str) {
+if {$setting != ""} {
+if {[setting:get $chan $setting] != ""} {
+if {![string equal -nocase $setting "joincount"] && ![string equal -nocase $setting "jointime"] && ![string equal -nocase $setting "kickcount"]} {
+	set str_length [llength [setting:get $chan $setting]]
+	set text [setting:get $chan $setting]
+if {$str_length > 1} {
+if {$str_length > 3 } {
+	set text "[lrange $text 0 3] .."
+}
+	set text \"[join $text]\"
+} else { set text [join $text] }
+	lappend btstr_list [black:color 1 $hand $setting] $text
+			}
+		}
+	}
+}
+
+if {$btstr_list == ""} {
+	set btstr_list "N/A"
+}
+
+	set btflag_list "$black(say.$getlang.hchaninfo.2) $btflags"
+	set btstr_list "$black(say.$getlang.hchaninfo.4) $btstr_list"
+foreach flag [wordwrap [join $btflag_list]  440] {
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 "$flag"
+}
+foreach str [wordwrap [join $btstr_list]  440] {
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 "$str"
+}
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.4 none
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.5 none
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.6 none
+			}
+		}
+	}
+}
+
+chaninfo {
+
+if {[matchattr $hand nmo|M $chan]} {
+	set flag_list ""
+foreach info [channel info $chan] { 
+if {[regexp {^[+]} $info]} {
+ lappend flag_list [black:color 2 $hand $info] 
+	}
+if {[regexp {^[-]} $info]} {
+ lappend flag_list [black:color 4 $hand $info] 
+	}
+}
+	set expirebans [setting:get $chan expirebans]
+if {$expirebans == ""} {
+	set expirebans $black(default:bantime)
+}
+	set floodchan [channel get $chan flood-chan]
+	set floodjoin [channel get $chan flood-join]
+	set floodkick [channel get $chan flood-kick]
+	set floodctcp [channel get $chan flood-ctcp]
+	set floodnick [channel get $chan flood-nick]
+	set flooddeop [channel get $chan flood-deop]
+	set chanmode [channel get $chan chanmode]
+
+	set floodchan [string map {" " ":"} $floodchan]
+	set floodjoin [string map {" " ":"} $floodjoin]
+	set floodkick [string map {" " ":"} $floodkick]
+	set floodctcp [string map {" " ":"} $floodctcp]
+	set floodnick [string map {" " ":"} $floodnick]
+	set flooddeop [string map {" " ":"} $flooddeop]
+	set eggdrop_flags "[black:color 1 $hand flood-chan] $floodchan [black:color 1 $hand flood-join] $floodjoin [black:color 1 $hand flood-kick]  $floodkick [black:color 1 $hand flood-ctcp] $floodctcp [black:color 1 $hand flood-nick] $floodnick [black:color 1 $hand flood-deop] $flooddeop [black:color 1 $hand expirebans] $expirebans [black:color 1 $hand chanmode]  $chanmode"
+foreach flag [wordwrap $flag_list 400] {
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 " $black(say.$getlang.hchaninfo.1) $flag"
+		}
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 "$black(say.$getlang.hchaninfo.3) : $eggdrop_flags"
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.4 none
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.5 none
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.6 none
+			}
+		}
+	}
+}
+
+module {
+
+set allmodules "Anunt AutoBroadcast BadChan Idle Limit XTools Xonly Seen VoiceMe VoiceOnMsg CloneScan EGG ChanLink SecureMode Private GuestNick Greet Leave Count Topic Timer Next TopWords BackChan ReportNick Quote Note Language"
+set manager_module "Anunt BadChan Idle Limit XTools Xonly Seen VoiceMe VoiceOnMsg Clonescan Securemode Private Guestnick Greet Leave Count Topic Next TopWords BackChan ReportNick Quote Note Language"
+set owner_modules "Anunt AutoBroadcast BadChan Idle Limit CloneScan XTools Xonly Seen VoiceMe VoiceOnMsg CloneScan EGG ChanLink SecureMode Private GuestNick Greet Leave Count Topic Timer Next TopWords BackChan ReportNick Quote Note Language"
+set module_output ""
+set other_module "Note"
+set master_module "Anunt BadChan Idle Limit XTools Xonly Seen VoiceMe VoiceOnMsg Clonescan Securemode Private Guestnick Greet Leave Count Topic Next TopWords BackChan ReportNick Quote Note Language"
+
+if {[matchattr $hand n]} {
+	set current_modules $allmodules
+} elseif {[matchattr $hand m]} {
+	set current_modules $owner_modules
+} elseif {[matchattr $hand o]} {
+	set current_modules $master_module
+} elseif {[matchattr $hand -|M $chan]} {
+	set current_modules $manager_module
+} else {
+	set current_modules $other_module
+}
+foreach m $current_modules {
+if {[string equal -nocase $m "quote"]} {
+	set m "q"
+}
+if {[string equal -nocase $m "autobroadcast"]} {
+	set m "bt"
+}
+	set cmd_status [btcmd:status $chan $hand $m 1]
+if {[string equal -nocase $m "Topic"]} {
+	set m "AutoTopic"
+}
+if {[string equal -nocase $m "q"]} {
+	set m "Quote"
+}
+if {[string equal -nocase $m "bt"]} {
+	set m "AutoBroadcast"
+}
+
+if {$cmd_status == "1"} {
+	set m "\0034$m\003"
+}
+	switch [string tolower [color:filter $m]] {
+	
+count {
+if {[setting:get $chan greet]} {
+	set read_msg ""
+	set file [open $black(join_file) r]
+while {[gets $file line] != -1} {
+	set read_modul [lindex [split $line] 0]
+	set read_chan [lindex [split $line] 1]
+	set enc_chan [encoding convertfrom utf-8 $read_chan]
+if {[string equal -nocase $read_modul "greet"] && [string equal -nocase $chan $enc_chan]} {	
+	set read_msg [lrange [split $line] 2 end]
+	set getgreet [encoding convertfrom utf-8 $read_msg]
+	}
+}
+	close $file
+if {[lsearch -exact [color:filter $read_msg] "%count%"] > -1} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}
+	} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}
+}
+
+anunt {
+if {[setting:get $chan anunt]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}
+}
+
+quote {
+if {[setting:get $chan quote]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}
+}
+
+note {
+if {[setting:get $chan note]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}
+}
+
+chanlink {
+if {[link:status $chan] == "1"} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"
+	}
+}
+
+autobroadcast {
+	set found_module 0
+	foreach tmr [timers] {
+if {[string match "*broadcastpublic:show*" [join [lindex $tmr 1]]]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+	set found_module 1
+	}
+}
+if {$found_module == "0"} {
+	lappend module_output "[black:color 4 $hand $m]\[-\] ;"
+	}
+}
+
+badchan {
+if {[setting:get $chan antibadchan]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}	
+}
+
+idle {
+	set idle_type ""
+if {[setting:get $chan idleop]} {
+	lappend idle_type "@"
+}
+if {[setting:get $chan idlevoice]} {
+	lappend idle_type "+"
+}
+if {[setting:get $chan idlehalfop]} {
+	lappend idle_type "%"
+}
+if {$idle_type == ""} {
+	set idle_type ""
+}
+	lappend module_output "[black:color 1 $hand $m]\[$idle_type\] ;"
+}
+
+limit {
+if {[setting:get $chan limit]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}	
+}
+
+clonescan {
+if {[setting:get $chan clonescan]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}	
+}
+
+xtools {
+if {[setting:get $chan xtools]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}
+}
+
+xonly {
+if {[setting:get $chan xonly]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}
+}
+
+seen {
+if {[setting:get $chan seen]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}
+}
+
+voiceme {
+if {[setting:get $chan voiceme]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}
+}
+
+voiceonmsg {
+if {[setting:get $chan voiceonmsg]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}
+}
+
+egg {
+	lappend module_output "[black:color 1 $hand $m]\[\] ;"
+}
+
+note {
+if {[setting:get $chan note]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}
+}
+
+securemode {
+if {[setting:get $chan securemode]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;" }	
+}
+
+private {
+if {[setting:get $chan private]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;" }	
+}
+
+
+guestnick {
+if {[setting:get $chan guestnick]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}	
+}
+
+greet {
+if {[setting:get $chan greet]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}	
+}
+
+leave {
+if {[setting:get $chan leave]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}	
+}
+
+autotopic {
+if {[setting:get $chan autotopic]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}	
+}
+
+timer {
+	lappend module_output "[black:color 1 $hand $m]\[\] ;"
+}
+
+topwords {
+if {[setting:get $chan topwords]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}	
+}
+
+next {
+if {[setting:get $chan next]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}	
+}
+
+quote {
+if {[setting:get $chan quoteofday]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}	
+}
+
+backchan {
+if {[setting:get $chan backchan] != ""} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}	
+}
+
+reportnick {
+if {[setting:get $chan reportnick]} {
+	lappend module_output "[black:color 2 $hand $m]\[+\] ;"
+} else { lappend module_output "[black:color 4 $hand $m]\[-\] ;"}	
+}
+
+language {
+	set lang [string toupper [setting:get $chan lang]]
+if {$getlang == ""} { set getlang "[string toupper $black(default_lang)]" }
+	lappend module_output "[black:color 1 $hand $m]\[$lang\] ;"
+					}
+				}
+			}					
+	blacktools:tell:h $nick $host $hand $chan $chan1 h.15 "[join $module_output]"
+	switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.7 none
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.8 none
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 hcommand.9 none
+				}
+			}
+		}
+egg {
+	set tcl_config $black(tclconfig)
+	set eggcmds ""
+	set egg_cmds "nick realname away homechan chanserv hostchanserv userlogin userpass chanremove-setting add-defaultmask add-mask user-expire banmethod-expire broadcast-showtime cmdchar defaultlang defaultoutput floodmenuprot userfloodmsgprot massfloodmsgprot massfloodsilencetime floodnotcprot pagelimit"
+	set split_cmds [split $egg_cmds " "]
+foreach cmd [color:filter $split_cmds] {
+	switch $cmd {
+	away {
+	set get_info [config:getinfo $tcl_config "set black(default_away) \"*\""]
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	add-mask {
+	set get_info [config:getinfo $tcl_config "set black(hostdefaultadd) \"*\""]
+	switch $get_info {
+	1 {
+	set get_info "*!*@host"
+	}
+	2 {
+	set get_info "*!user@host"
+	}
+	3 {
+	set get_info "nick!user@host"
+	}
+	4 {
+	set get_info "nick!*@*"
+	}
+	5 {
+	set get_info "*!user@*"
+			}
+		}
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	hostchanserv {
+	set get_info [config:getinfo $tcl_config "set black(hostchanserv) \"*\""]
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	add-defaultmask {
+	set get_info [config:getinfo $tcl_config "set black(hostadd) \"*\""]
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	realname {
+	set get_info [config:getinfo $config "set realname \"*\""]
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	userlogin {
+	set get_info [config:getinfo $tcl_config "set black(username) \"*\""]
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	userpass {
+	set get_info [config:getinfo $tcl_config "set black(password) \"*\""]
+if {$get_info == ""} { set get_info "N/A" }
+	set getc [string length $get_info]
+	set password ""
+	for {set i 0} { $i < $getc } { incr i} {
+	lappend password "*"
+	}
+	set get_info [join $password ""]
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	chanserv {
+	set get_info [config:getinfo $tcl_config "set black(chanserv) \"*\""]
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	nick {
+	set get_info [config:getinfo $config "set nick \"*\""]
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	cmdchar {
+	set get_info [config:getinfo $tcl_config "set black(cmdchar) \"*\""]
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	defaultlang {
+	set get_info [config:getinfo $tcl_config "set black(default_lang) \"*\""]
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	defaultoutput {
+	set get_info [config:getinfo $tcl_config "set black(default_output) \"*\""]
+	switch $get_info {
+	0 {
+	set get_info "NOTICE"
+	}
+	1 {
+	set get_info "CHAN"
+	}
+	2 {
+	set get_info "PRIVMSG"
+		}
+	}
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	homechan {
+	set get_info [config:getinfo $tcl_config "set black(homechan) \"*\""]
+if {[string equal -nocase $get_info "#no_home_chan"]} {
+	set get_info "N/A"
+}
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	floodmenuprot {
+	set get_info [config:getinfo $tcl_config "set black(antiflood:cmd) \"*\""]
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	userfloodmsgprot {
+	set get_info [config:getinfo $tcl_config "set black(msg:flood) \"*\""]
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	massfloodmsgprot {
+	set get_info [config:getinfo $tcl_config "set black(mass:msg:flood) \"*\""]
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	massfloodsilencetime {
+	set get_info [config:getinfo $tcl_config "set black(mass:msg:silence_time) \"*\""]
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info$black(say.$getlang.timeout.9)\]
+	}
+	
+	floodnotcprot {
+	set get_info [config:getinfo $tcl_config "set black(notice:flood) \"*\""]
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	chanremove-setting {
+	set get_info [config:getinfo $tcl_config "set black(chanremove_all) \"*\""]
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	user-expire {
+	set get_info [config:getinfo $tcl_config "set black(user_expire_time) \"*\""]
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info$black(say.$getlang.timeout.4)\]
+	}
+	banmethod-expire {
+	set get_info [config:getinfo $tcl_config "set black(banmethod_memory_time) \"*\""]
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	broadcast-showtime {
+	set get_info [config:getinfo $tcl_config "set black(bttime) \"*\""]
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	
+	pagelimit {
+	set get_info [config:getinfo $tcl_config "set black(modul:nr:entries) \"*\""]
+	lappend eggcmds [black:color 2 $hand $cmd]\[$get_info\]
+	}
+	login {
+	lappend eggcmds [black:color 2 $hand $cmd]
+	}
+	default {
+	lappend eggcmds [black:color 2 $hand $cmd]\[\]
+		}
+	}
+}
+	foreach option [h:wrap [join $eggcmds " ; "]  450] {
+	blacktools:tell:h $nick $host $hand $chan $chan1 hegg.1 "$option"
+		}
+	switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 hegg.2 none
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 hegg.3 none
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 hegg.4 none
+				}
+			}
+		}		
+	}
+}
+
+##############
+#########################################################################
+##   END                                                               ##
+#########################################################################

+ 3139 - 0
BlackTools2.5.2/Commands/BT.LocalCmds.tcl

@@ -0,0 +1,3139 @@
+#########################################################################
+##          BlackTools - The Ultimate Channel Control Script           ##
+##                    One TCL. One smart Eggdrop                       ##
+#########################################################################
+#########################   LOCAL CMDS TCL   ############################
+#########################################################################
+##						                       						   ##
+##   BlackTools  : http://blacktools.tclscripts.net	        	       ##
+##   Bugs report : http://www.tclscripts.net/	                       ##
+##   GitHub page : https://github.com/tclscripts/BlackToolS-TCL-script ##
+##   Online Help : irc://irc.undernet.org/tcl-help 	    	           ##
+##                 #TCL-HELP / UnderNet                                ##
+##                 You can ask in english or romanian                  ##
+##					                               					   ##
+#########################################################################
+
+
+################################ Commands ###################################
+
+################################## report ###################################
+
+proc report:process {nick host host1 hand chan chan1 type what message} {
+	global black
+if {[setting:get $chan reportnick]} {
+	set cmd_status [btcmd:status $chan $hand "report" 0]
+if {$cmd_status == "1"} {
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+	set number [scan $black(report:flood) %\[^:\]]
+	set timer [scan $black(report:flood) %*\[^:\]:%s]
+	
+if {[info exists black(floodreport:$host1:$chan)]} {
+if {$black(floodreport:$host1:$chan) >= "$number"} {
+	return
+	}
+}
+
+foreach tmr [utimers] {
+if {[string match "*black(floodreport:$host1:$chan)*" [join [lindex $tmr 1]]]} {
+	killutimer [lindex $tmr 2]
+	}
+}
+
+if {![info exists black(floodreport:$host1:$chan)]} { 
+	set black(floodreport:$host1:$chan) 0 
+}
+	incr black(floodreport:$host1:$chan)
+	utimer $timer [list unset black(floodreport:$host1:$chan)]
+	
+if {$what == ""} {
+if {$type == "0"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "report"
+}
+if {$type == "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "report"
+}
+if {$type == "2"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "report"
+}
+	return
+}
+
+if {![validchan $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+}
+
+if {![botisop $chan]} {
+	return
+}
+
+if {[isbotnick $what]} {
+	return
+}
+
+	set handle [nick2hand $what]
+if {[validuser $handle]} {
+	set found_acces 0
+foreach c [channels] {
+if {[matchattr $handle $black(exceptflags) $chan]} {
+	set found_acces 1
+		}
+	}
+if {$found_acces == "1"} {
+	return
+	}
+}
+
+if {[string equal -nocase $what $nick]} {
+	blacktools:tell $nick $host $hand $chan $chan1 report.5 none
+	return
+}
+	set getlang [string tolower [setting:get $chan lang]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+if {[onchan $what $chan]} {
+	set replace(%msg.1%) $what
+	set replace(%msg.2%) $nick
+	set replace(%msg.8%) $message
+if {$message != ""} {
+	set text [black:color:set "" $black(say.$getlang.report.2)]
+} else {
+	set text [black:color:set "" $black(say.$getlang.report.3)]
+}	
+	set reply [join $text]
+	set output [string map [array get replace] $reply]
+	putserv "NOTICE @$chan :$output"
+	blacktools:tell $nick $host $hand $chan $chan1 report.4 none
+	} else {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.usernotonchan $what
+		}
+	}
+}
+
+################################# disable ###################################
+
+proc disable:process {nick host hand chan chan1 type what user} {
+	global black
+	set cmd_status [btcmd:status $chan $hand "disable" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+	
+if {$what == ""} {
+if {$type == "0"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "disable"
+}
+if {$type == "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "disable"
+}
+if {$type == "2"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "disable"
+}
+	return
+}
+	set local_cmds "h omsg o v ho man version mode cycle broadcast say act i stats t myset b black stick dr bot n id spam bw vr gag sb banlist k w anunt bt badchan idle limit seen clonescan securemode private guestnick greet leave topic next helped noidle skip topwords q note report"
+
+if {[matchattr $hand -|M $chan] && [lsearch -exact $what $local_cmds] < 0} {
+	blacktools:tell $nick $host $hand $chan $chan1 disable.8 $what
+	return
+}
+
+if {[string equal -nocase $user "global"] && [matchattr $hand nm]} {
+	set return_cmd [btcmd:global:set $hand $what 1]
+		switch $return_cmd {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 disable.6 $what
+}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 disable.7 $what
+}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 disable.3 $what
+		}
+	3 {
+	blacktools:tell $nick $host $hand $chan $chan1 disable.8 $what
+		}
+	}
+	return
+}
+
+if {$user != ""} {
+	btcmd:set:user $nick $host $hand $chan $chan1 $user $what "1"
+	return
+}
+	set return_cmd [btcmd:set $chan $hand $what 1]
+	
+	switch $return_cmd {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 disable.1 $what
+}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 disable.2 $what
+}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 disable.3 $what
+}
+	3 {
+	blacktools:tell $nick $host $hand $chan $chan1 disable.8 $what
+		}
+	}
+}
+
+################################# enable ####################################
+
+proc enable:process {nick host hand chan chan1 type what user} {
+	global black
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+
+if {$what == ""} {
+if {$type == "0"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "enable"
+}
+if {$type == "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "enable"
+}
+if {$type == "2"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "enable"
+}
+	return
+}
+
+if {[string equal -nocase $user "global"] && [matchattr $hand nm]} {
+	set return_cmd [btcmd:global:set $hand $what 0]
+	switch $return_cmd {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 enable.7 $what
+}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 enable.6 $what
+}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 enable.3 $what
+		}
+	}
+	return
+}
+
+if {$user != ""} {
+	btcmd:set:user $nick $host $hand $chan $chan1 $user $what "0"
+	return
+}
+	set gl_check [btcmd:gl:status $what]
+if {$gl_check == "1" && $type == "0"} {
+	blacktools:tell $nick $host $hand $chan $chan1 enable.8 $what
+}
+
+if {[matchattr $hand -|M $chan]} {
+	set access "MANAGER"
+} elseif {[matchattr $hand n]} {
+	set access "BOSS"
+} elseif {[matchattr $hand m]} {
+	set access "OWNER"
+} elseif {[matchattr $hand o]} {
+	set access "MASTER"
+} 
+
+	set disable_level [btcmd:getlevel $chan $what]
+
+if {$access == "MANAGER" && $disable_level == "OWNER"} {
+	blacktools:tell $nick $host $hand $chan $chan1 enable.9 $what
+	return
+}
+if {$access == "OWNER" && $disable_level == "BOSS"} {
+	blacktools:tell $nick $host $hand $chan $chan1 enable.9 $what
+	return
+}
+if {$access == "MANAGER" && $disable_level == "BOSS"} {
+	blacktools:tell $nick $host $hand $chan $chan1 enable.9 $what
+	return
+}
+if {$access == "MANAGER" && $disable_level == "MASTER"} {
+	blacktools:tell $nick $host $hand $chan $chan1 enable.9 $what
+	return
+}
+if {$access == "MASTER" && $disable_level == "OWNER"} {
+	blacktools:tell $nick $host $hand $chan $chan1 enable.9 $what
+	return
+}
+
+if {$access == "MASTER" && $disable_level == "BOSS"} {
+	blacktools:tell $nick $host $hand $chan $chan1 enable.9 $what
+	return
+}
+	set return_cmd [btcmd:set $chan $hand $what 0]
+	switch $return_cmd {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 enable.2 $what
+}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 enable.1 $what
+}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 enable.3 $what
+}
+	}
+}
+
+################################### t #################################
+
+proc t:process {nick host hand chan chan1 topics type} {
+global botnick black
+	set cmd_status [btcmd:status $chan $hand "t" 0]
+if {$cmd_status == "1"} { 
+	return
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+
+if {$topics == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "t"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "t"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "t"
+		}
+	}
+	return
+}
+
+if {![validchan $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+}
+if {![onchan $botnick $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
+	return
+}
+
+if {[setting:get $chan showhandle]} {
+	set topics "($hand) $topics"
+	} else { set topics "$topics" 
+}
+
+if {[setting:get $chan xonly]} {
+	if {![botisop $chan]} {
+	putserv "PRIVMSG $black(chanserv) :topic $chan $topics"
+	return
+	}
+}
+
+if {![botisop $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.noop none
+	return
+}
+	putserv "TOPIC $chan :$topics"
+}
+
+################################# i ###################################
+
+proc i:process {nick host hand chan chan1 inick type} {
+global botnick black
+	set show_inick $inick
+	set cmd_status [btcmd:status $chan $hand "i" 0]
+if {$cmd_status == "1"} { 
+	return
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+
+if {$inick == "" && $chan != $chan1} {
+	set inick $nick
+}
+
+if {$inick == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "i"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "i"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "i"
+		}
+	}
+	return
+}
+
+if {![validchan $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+}
+if {![onchan $botnick $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
+	return
+}
+
+if {![botisop $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 gl.noop none
+	return
+}
+	putserv "USERHOST :$inick"
+	bind RAW - 302 i:online:check
+	set ::getnick $nick
+	set ::hand $hand
+	set ::host $host
+	set ::chan $chan
+	set ::chan1 $chan1
+	set ::type $type
+	set ::inick $inick
+	set ::show_inick $show_inick
+}
+
+proc i:online:check {from keyword arguments } {
+	global black
+	set anick $::getnick
+	set hand $::hand
+	set host $::host
+	set chan $::chan
+	set chan1 $::chan1
+	set inick $::inick
+	set show_inick $::show_inick 
+	
+set hostname [lindex [split $arguments] 1]
+if {[regexp {\+} $hostname]} {
+	set split_host [split $hostname "+"]
+} else {
+	set split_host [split $hostname "-"]
+}
+	set mask [lindex $split_host 1]
+	set getnick [string map {
+			"=" ""
+			":" ""
+			} [lindex $split_host 0]]
+if {$getnick != ""} {
+	set replace(%nick%) $anick
+	set replace(%chan%) $chan
+	set getlang [string tolower [getuser $hand XTRA OUTPUT_LANG]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+	set text [black:color:set "" $black(say.$getlang.i.7)]
+	set getmsg [join $text]
+if {[info exists black(say.$getlang.i.7)]} {
+	set imessage [string map [array get replace] $getmsg]
+}
+
+if {$inick != ""} {
+if {[onchan $inick $chan]} {
+	blacktools:tell $anick $host $hand $chan $chan1 i.1 $show_inick
+	return
+}
+	putserv "INVITE $inick $chan"
+	putserv "PRIVMSG $inick :$imessage"
+	blacktools:tell $anick $host $hand $chan $chan1 i.2 $show_inick
+		}
+	} else {
+	blacktools:tell $anick $host $hand $chan $chan1 gl.notonline "$inick"
+}
+	check:if:bind "i:online:check" "302"
+}
+
+############################### purge ###############################
+
+proc purge:process {nick host hand chan chan1 reason} {
+	global black
+	set cmd_status [btcmd:status $chan $hand "purge" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+if {!($black(homechan) == "") && ![string equal -nocase $black(homechan) "#no_home_chan"]} {
+if {[string equal -nocase $chan $black(homechan)]} {
+	blacktools:tell:prv $nick $host $hand delchan.5 $chan
+	return
+	}
+}
+	channel remove $chan
+	delchan:all $chan
+	topwords:delete $chan
+	putserv "PART $chan :PURGED by $hand :$reason"
+}
+
+################################### v #################################
+
+proc v:process {nick host hand chan chan1 arg} {
+global botnick black
+	set xban 0
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+	set cmd_status [btcmd:status $chan $hand "v" 0]
+if {$cmd_status == "1"} { 
+	return
+}
+if {![validchan $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none	
+	return
+}
+if {![onchan $botnick $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
+	return
+}
+
+if {![botisop $chan] && ![setting:get $chan xonly]} { blacktools:tell $nick $host $hand $chan $chan1 gl.noop none
+	return
+}
+
+if {$arg == ""} {
+	set arg $nick
+}
+
+if {[setting:get $chan xonly] && [onchan $black(chanserv) $chan]} {
+	set xban 1
+}
+
+if {[string equal -nocase $arg "+"]} {
+	set noxonly 0
+	set userlist ""
+	foreach voicenick [chanlist $chan] {
+if {[isvoice $voicenick $chan]} { continue }
+if {[isbotnick $voicenick]} { continue }
+if {$xban == "0"} {
+	set noxonly 1
+	pushmode $chan +v $voicenick	
+		}
+	}
+if {$noxonly == "0"} {
+foreach getuser [chanlist $chan] {
+if {![isvoice $getuser $chan]} {
+	lappend userlist $getuser
+			}
+		}
+		putserv "PRIVMSG $black(chanserv) :voice $chan [join $userlist]"
+	}	
+	return
+}
+
+if {[string equal -nocase $arg "-"]} {
+	set noxonly 0
+	set userlist ""
+	foreach voicenick [chanlist $chan] {
+if {[isbotnick $voicenick]} { continue }
+if {$xban == "0"} {
+	set noxonly 1
+	pushmode $chan -v $voicenick	
+		}
+	}
+if {$noxonly == "0"} {
+foreach getuser [chanlist $chan] {
+if {[isvoice $getuser $chan]} {
+	lappend userlist $getuser
+			}
+		}
+		putserv "PRIVMSG $black(chanserv) :devoice $chan [join $userlist]"
+	}	
+	return
+}
+	set voicelist ""
+	set devoicelist ""
+foreach voicenick [split $arg] {
+if {[isbotnick $voicenick]} { continue }
+if {[isvoice $voicenick $chan]} {
+if {$xban == "0"} {
+	pushmode $chan -v $voicenick
+} else { lappend devoicelist $voicenick }
+} else {
+if {$xban == "0"} {
+	pushmode $chan +v $voicenick
+			} else { lappend voicelist $voicenick }
+		}
+	}
+if {$devoicelist != ""} {
+	putserv "PRIVMSG $black(chanserv) :devoice $chan [join $devoicelist]"
+}
+if {$voicelist != ""} {
+	putserv "PRIVMSG $black(chanserv) :voice $chan [join $voicelist]"
+	}
+}
+
+################################## ho #################################
+
+proc ho:process {nick host hand chan chan1 arg} {
+global botnick black
+	set xban 0
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+	set cmd_status [btcmd:status $chan $hand "ho" 0]
+if {$cmd_status == "1"} { 
+	return
+}
+if {![validchan $chan]} {
+blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+return
+}
+if {![onchan $botnick $chan]} {
+blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
+return
+}
+if {![botisop $chan] && ![setting:get $chan xonly]} { blacktools:tell $nick $host $hand $chan $chan1 gl.noop none
+ return
+}
+
+if {$arg == ""} {
+set arg $nick
+}
+
+if {[setting:get $chan xonly] && [onchan $black(chanserv) $chan]} {
+	set xban 1
+}
+
+if {[string equal -nocase $arg "+"]} {
+	foreach hopnick [chanlist $chan] {
+if {[ishalfop $hopnick $chan]} { continue }
+if {$xban == "0"} {
+	pushmode $chan +h $hopnick
+		} else { return }
+	}
+	return
+}
+
+if {[string equal -nocase $arg "-"]} {
+	foreach hopnick [chanlist $chan] {
+if {![ishalfop $hopnick $chan]} { continue }
+if {[isbotnick $hopnick]} { continue }
+if {[onchan $black(chanserv) $chan] && ![setting:get $chan xonly]} {
+	blacktools:tell $nick $host $hand $chan $chan1 massdeop.429 $black(chanserv)
+	return
+		}
+if {$xban == "0"} {
+	pushmode $chan -h $hopnick	
+		} else { return }
+	}
+	return
+}
+
+foreach hopnick [split $arg] {
+if {[isbotnick $hopnick]} { continue }
+if {[ishalfop $hopnick $chan]} {
+if {$xban == "0"} {
+	pushmode $chan -h $hopnick
+} else { return }
+} else {
+if {![setting:get $chan xonly]} {
+pushmode $chan +h $hopnick
+			} else { return }
+		}
+	}
+}
+
+################################## o ##################################
+
+proc o:process {nick host hand chan chan1 arg} {
+global botnick black
+	set xban 0
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+	set cmd_status [btcmd:status $chan $hand "o" 0]
+if {$cmd_status == "1"} { 
+	return
+}
+if {![validchan $chan]} {
+blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+return
+}
+if {![onchan $botnick $chan]} {
+blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
+return
+}
+
+if {![botisop $chan] && ![setting:get $chan xonly]} { blacktools:tell $nick $host $hand $chan $chan1 gl.noop none
+ return
+}
+
+if {$arg == ""} {
+set arg $nick
+}
+
+if {[setting:get $chan xonly] && [onchan $black(chanserv) $chan]} {
+	set xban 1
+}
+
+if {[string equal -nocase $arg "+"]} {
+	set userlist ""
+	set noxonly 0
+	foreach opnick [chanlist $chan] {
+if {[isop $opnick $chan]} { continue }
+if {$xban == "0"} {
+	set noxonly 1
+	pushmode $chan +o $opnick
+		}
+	}
+if {$noxonly == "0"} {
+foreach getuser [chanlist $chan] {
+if {![isop $getuser $chan]} {
+	lappend userlist $getuser
+		}
+	}
+		putserv "PRIVMSG $black(chanserv) :op $chan [join $userlist]"
+	}	
+	return
+}
+
+if {[string equal -nocase $arg "-"]} {
+	set userlist ""
+	set noxonly 0
+	foreach opnick [chanlist $chan] {
+if {![isop $opnick $chan]} { continue }
+if {[isbotnick $opnick]} { continue }
+if {[onchan $black(chanserv) $chan] && ![setting:get $chan xonly]} {
+	blacktools:tell $nick $host $hand $chan $chan1 o.1 $black(chanserv)
+	return
+}
+if {$xban == "0"} {
+	set noxonly 1
+	pushmode $chan -o $opnick	
+	}
+}
+if {$noxonly == "0"} {
+foreach getuser [chanlist $chan] {
+if {[isop $getuser $chan]} {
+	lappend userlist $getuser
+		}
+	}
+		putserv "PRIVMSG $black(chanserv) :deop $chan [join $userlist]"
+	}
+	return
+}
+	set oplist ""
+	set deoplist ""
+foreach opnick [split $arg] {
+if {[isbotnick $opnick]} { continue }
+if {[isop $opnick $chan]} {
+if {$xban == "0"} {
+pushmode $chan -o $opnick
+} else { lappend deoplist $opnick } 
+} else {
+if {$xban == "0"} {
+pushmode $chan +o $opnick
+			} else { lappend oplist $opnick }
+		}
+	}
+if {$deoplist != ""} {
+	putserv "PRIVMSG $black(chanserv) :deop $chan [join $deoplist]"
+}
+if {$oplist != ""} {
+	putserv "PRIVMSG $black(chanserv) :op $chan [join $oplist]"
+	}
+}
+
+################################ say ##################################
+
+proc say:process {nick host hand chan chan1 text type} {
+global botnick black
+	set cmd_status [btcmd:status $chan $hand "say" 0]
+if {$cmd_status == "1"} { 
+	return
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+
+if {$text == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "say"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "say"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "say"
+		}
+	}
+	return 0
+}
+
+if {![validchan $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+}
+
+if {![onchan $botnick $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
+	return
+}
+	putserv "PRIVMSG $chan :$text"
+}
+
+################################ act ##################################
+
+proc act:process {nick host hand chan chan1 text type} {
+global botnick black
+	set cmd_status [btcmd:status $chan $hand "act" 0]
+if {$cmd_status == "1"} { 
+	return
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+if {$text == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "act"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "act"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "act"
+		}
+	}
+	return 0
+}
+
+if {![validchan $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+}
+
+if {![onchan $botnick $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
+	return
+}
+	putserv "PRIVMSG $chan :\001ACTION $text\001"
+}
+
+
+
+############################## version ################################
+
+proc version:process {nick host hand chan chan1 arg} {
+global botnick black
+	set cmd_status [btcmd:status $chan $hand "version" 0]
+if {$cmd_status == "1"} { 
+	return
+}
+if {$arg != ""} { return }
+	blacktools:tell $nick $host $hand $chan $chan1 version.1 $black(vers)
+}
+
+############################### cycle #################################
+
+proc cycle:process {nick host hand chan chan1 reason} {
+global black botnick
+	set cmd_status [btcmd:status $chan $hand "cycle" 0]
+	set reply ""
+if {$cmd_status == "1"} { 
+	return
+}
+	set getlang [string tolower [setting:get $chan lang]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+return
+}
+
+if {![validchan $chan]} {
+blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+return
+}
+
+if {![onchan $botnick $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
+	return
+}
+
+if {[regexp {^[0-9]} $reason] && [matchattr $hand nmo|M $chan]} {
+	set replace(%msg.1%) $reason
+	set text [black:color:set "" $black(say.$getlang.cycle.2)]
+	set reply [join $text]
+	putserv "PART $chan :[string map [array get replace] $reply]"
+	channel set $chan +inactive
+	utimer $reason [list channel set $chan -inactive]
+	return
+}
+
+if {$reason == ""} { 
+	set reason "$black(say.$getlang.cycle.1)" 
+	set len [llength $reason] 
+    set random [expr int(rand()*$len)] 
+    set reason [lindex $reason $random]
+	set text [black:color:set "" $reason]
+	set reply [join $text]
+} else {
+	set reply $reason
+}
+	putserv "PART $chan :$reply"
+	putserv "JOIN $chan"
+}
+
+
+################################### mode ######################################
+
+proc mode:process {nick host hand chan chan1 modes type hosts} {
+global botnick black
+	set cmd_status [btcmd:status $chan $hand "mode" 0]
+if {$cmd_status == "1"} { 
+	return
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+if {$modes == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "mode"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "mode"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "mode"
+		}
+	}
+	return 0
+}
+
+if {![validchan $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+}
+
+if {![onchan $botnick $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
+	return
+}
+
+if {![botisop $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.noop none
+	return
+}
+
+if {![regexp {^[+ -]} $modes]} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "mode"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "mode"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "mode"
+		}
+	}
+	return
+}
+	blacktools:tell $nick $host $hand $chan $chan1 mode.6 $modes
+if {![string equal -nocase $modes "+b"] && ![string equal -nocase $modes "-b"]} {
+	putserv "MODE $chan $modes"
+	channel set $chan chanmode $modes
+	} else {
+	putserv "MODE $chan $modes $hosts"
+	}
+}
+
+################################## myset #############################
+
+proc myset:process {nick host hand chan chan1 flags typez type chan2 arg} {
+global black
+	set cmd_status [btcmd:status $chan $hand "myset" 0]
+if {$cmd_status == "1"} { 
+	return
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+	set show_greet $arg
+	set show_typez $typez
+if {$flags == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
+		}
+	}
+	return 0
+}
+switch -exact -- [string tolower $flags] {
+lang {
+if {$typez == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
+		}
+	}
+	return
+}
+if {[string equal -nocase $typez "reset"]} {
+	setuser $hand XTRA OUTPUT_LANG
+	blacktools:tell $nick $host $hand $chan $chan1 myset.11 $flags
+	return
+}
+if {[string equal -nocase $typez "show"]} {
+	set get [getuser $hand XTRA OUTPUT_LANG]
+if {$get == ""} { set get "N/A" }
+	blacktools:tell $nick $host $hand $chan $chan1 myset.12 "$flags $get"
+	return
+}
+
+if {![file exists "$black(dirname)/BlackTools/lang/BT.[string tolower $typez].lang.tcl"]} {
+	blacktools:tell $nick $host $hand $chan $chan1 myset.5 \002[string tolower $typez]\002
+	return
+}
+	setuser $hand XTRA OUTPUT_LANG $typez
+	blacktools:tell $nick $host $hand $chan $chan1 myset.1 $typez
+	return
+}
+addhost {
+if {[matchattr $hand mno]} {
+	set found_it 0
+	set found_user ""
+if {$typez == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
+		}
+	}
+	return
+}
+if {![string equal -nocase $typez "-telnet!*@*"]} {
+foreach u [userlist] {
+	set h [getuser $u hosts]
+foreach hs $h {
+if {[string match -nocase $hs $typez]} {
+	set found_it 1
+	set found_user $u
+			}
+		}	
+	}
+}
+if {$found_it == "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 addhost.1 "[split $found_user] $typez"
+	return
+}
+	setuser $hand HOSTS $typez
+	blacktools:tell $nick $host $hand $chan $chan1 myset.7 $typez
+	}
+}
+
+delhost {
+if {[matchattr $hand mno]} {
+	set found_it 0
+if {$typez == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
+		}
+	}
+	return
+}
+	set h [getuser $hand hosts]
+foreach hs $h {
+if {[string match -nocase $hs $typez]} {
+	set found_it 1
+	}
+}
+
+if {$found_it == "0"} {
+	blacktools:tell $nick $host $hand $chan $chan1 myset.9 $typez
+	return
+}
+	delhost $hand $typez
+	blacktools:tell $nick $host $hand $chan $chan1 myset.8 $typez
+	}
+}
+
+greet {
+if {$typez == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
+		}
+	}
+	return
+}
+
+if {[string equal -nocase $typez "show"]} {
+	set get [getuser $hand INFO]
+if {$get == ""} { set get "N/A" }
+	blacktools:tell $nick $host $hand $chan $chan1 myset.12 "$flags $get"
+	return
+}
+
+if {[string equal -nocase $typez "reset"]} {
+	setuser $hand INFO ""
+	blacktools:tell $nick $host $hand $chan $chan1 myset.11 $flags
+	return
+}
+	setuser $hand INFO $arg
+	blacktools:tell $nick $host $hand $chan $chan1 myset.6 $show_greet
+}
+
+auto {
+if {[matchattr $hand mno|M $chan]} {
+if {[regexp {^[&#]} $chan2]} {
+	set actchan $chan2
+} else {
+if {[string equal -nocase $chan2 "global"]} {
+	set actchan "global"
+} else {
+	set actchan $chan
+	}
+}
+if {![regexp {^[+ -]} $typez]} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
+		}
+	}
+	return
+}
+	set verify [string trim $typez {"+","-"}]
+
+if {![string equal -nocase $verify "o"] && ![string equal -nocase $verify "v"]} {
+if {$type == "0"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
+}
+if {$type == "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
+	}
+	return
+}
+if {[matchattr $hand mno] && [string equal -nocase "$actchan" "global"]} {
+if {[string match -nocase $typez "+o"]} {
+if {[matchattr $hand g]} {
+	chattr $hand -g
+}
+	chattr $hand +a
+	blacktools:tell $nick $host $hand $actchan $chan1 auto.6 $hand
+}
+if {[string match -nocase $typez "-o"]} {
+	chattr $hand -a 
+	blacktools:tell $nick $host $hand $actchan $chan1 auto.14 $hand
+}
+if {[string match -nocase $typez "+v"]} {
+if {[matchattr $hand a]} {
+	chattr $hand -a
+}
+	chattr $hand +g
+	blacktools:tell $nick $host $hand $actchan $chan1 auto.7 $hand
+}
+if {[string match -nocase $typez "-v"]} {
+	chattr $hand -g
+	blacktools:tell $nick $host $hand $actchan $chan1 auto.15 $hand
+	}
+	return
+}
+if {[string match -nocase $typez "+o"]} {
+if {[matchattr $hand -|g $actchan]} {
+	chattr $hand -|-g $actchan
+}
+	chattr $hand -|a $actchan
+	blacktools:tell $nick $host $hand $actchan $chan1 auto.8 $hand
+}
+if {[string match -nocase $typez "-o"]} {
+	chattr $hand -|-a $actchan
+	blacktools:tell $nick $host $hand $actchan $chan1 auto.16 $hand
+}
+if {[string match -nocase $typez "+v"]} {
+if {[matchattr $hand -|a $actchan]} {
+	chattr $hand -|-a $actchan
+}
+	chattr $hand -|g $actchan
+	blacktools:tell $nick $host $hand $actchan $chan1 auto.9 $hand
+}
+if {[string match -nocase $typez "-v"]} {
+	chattr $hand -|-g $actchan
+	blacktools:tell $nick $host $hand $actchan $chan1 auto.17 $hand
+		}
+	}
+}
+
+handle {
+if {[matchattr $hand mno|M $chan]} {
+if {$typez == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
+		}
+	}
+	return
+	}
+if {[string equal -nocase $typez "show"]} {
+	blacktools:tell $nick $host $hand $chan $chan1 myset.12 "$flags $hand"
+	return
+}
+if {[validuser $typez]} {
+	blacktools:tell $nick $host $hand $chan $chan1 chuser.3 none
+return
+}	
+	blacktools:tell $nick $host $hand $chan $chan1 myset.4 "$show_typez"
+	chhandle $hand $typez
+	}
+}
+
+notes {
+if {$typez == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
+		}
+	}
+	return
+}
+	switch $typez {
+	on {
+	blacktools:tell $nick $host $hand $chan $chan1 myset.19 "myset"
+	setuser $hand XTRA NO_NOTES
+	}
+	
+	off {
+	blacktools:tell $nick $host $hand $chan $chan1 myset.20 "myset"
+	setuser $hand XTRA NO_NOTES 1
+	}
+	
+	show {
+	set get [getuser $hand XTRA NO_NOTES]
+if {$get != ""} { set get "OFF" }  else { set get "ON" } 
+	blacktools:tell $nick $host $hand $chan $chan1 myset.12 "$flags $get"
+	return
+}	
+	default {
+	switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
+				}
+			}
+		}
+	}
+}
+
+noteexpire {
+if {$typez == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
+		}
+	}
+	return
+}
+
+if {[string equal -nocase $typez "reset"]} {
+	setuser $hand XTRA NOTE_EXPIRE
+	blacktools:tell $nick $host $hand $chan $chan1 myset.11 $flags
+	return
+}
+if {[string equal -nocase $typez "show"]} {
+	set get [getuser $hand XTRA NOTE_EXPIRE]
+if {$get == ""} { set get "N/A" }
+	blacktools:tell $nick $host $hand $chan $chan1 myset.12 "$flags $get"
+	return
+}
+
+if {![regexp {^[0-9]} $typez]} {
+	switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
+		}
+	}
+	return
+}
+	set return_time [time_return_minute $typez]
+if {$return_time == "-1"} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
+		}
+	}
+	return
+}
+	setuser $hand XTRA NOTE_EXPIRE [string tolower $typez]
+	blacktools:tell $nick $host $hand $chan $chan1 myset.13 $typez
+}
+
+
+autoinvite {
+	switch [string tolower $typez] {
+	
+	show {
+	set get [getuser $hand XTRA AUTOINVITE]
+if {$get == ""} { set get "N/A" }
+if {$get == "1"} { set get "on"} else { set get "off" }
+	blacktools:tell $nick $host $hand $chan $chan1 myset.12 "$flags $get"
+}
+
+	reset {
+	setuser $hand XTRA AUTOINVITE
+	blacktools:tell $nick $host $hand $chan $chan1 myset.11 $flags
+}
+
+	on {
+	setuser $hand XTRA AUTOINVITE 1
+	blacktools:tell $nick $host $hand $chan $chan1 myset.3 $typez
+}
+	off {
+	setuser $hand XTRA AUTOINVITE 0
+	blacktools:tell $nick $host $hand $chan $chan1 myset.3 $typez
+		}
+	}
+}
+
+output {
+	switch [string tolower $typez] {
+	show {
+	set get [getuser $hand XTRA OUTPUT_TYPE]
+if {$get == ""} { set get "N/A" }
+if {$get == "0"} { set get "NOTICE" } elseif {$get == "1"} { set get "CHAN" } elseif {$get == "2"} { set get "MSG" } else { set get "NOTICE"}
+	blacktools:tell $nick $host $hand $chan $chan1 myset.12 "$flags $get"
+}
+
+	reset {
+	setuser $hand XTRA OUTPUT_TYPE
+	blacktools:tell $nick $host $hand $chan $chan1 myset.11 $flags
+}
+	notice {
+	setuser $hand XTRA OUTPUT_TYPE 0
+	blacktools:tell $nick $host $hand $chan $chan1 myset.2 $typez
+}
+	chan {
+	setuser $hand XTRA OUTPUT_TYPE 1
+	blacktools:tell $nick $host $hand $chan $chan1 myset.2 $typez
+}
+	msg {
+	setuser $hand XTRA OUTPUT_TYPE 2
+	blacktools:tell $nick $host $hand $chan $chan1 myset.2 $typez
+		}
+	}
+}
+
+colors {
+if {[matchattr $hand mno|MAOV $chan]} {
+if {$typez == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
+		}
+	}
+	return
+}
+if {[string equal -nocase $typez "reset"]} {
+	setuser $hand XTRA OUTPUT_COLORS
+	blacktools:tell $nick $host $hand $chan $chan1 myset.11 $flags
+	return
+}
+if {[string equal -nocase $typez "show"]} {
+	set get [getuser $hand XTRA OUTPUT_COLORS]
+if {$get == ""} { set get $black(default_colors) }
+	blacktools:tell $nick $host $hand $chan $chan1 myset.12 "$flags $get"
+	return
+}
+	set validcolors "bold underline red blue green yellow orange cyan grey brown purple pink black"
+	set notvalid 0
+if {[llength $arg] > 4 || [llength $arg] < 4} {
+	blacktools:tell $nick $host $hand $chan $chan1 myset.14 none
+	return
+		}
+foreach color $arg {
+if {[lsearch [string tolower $color] $validcolors] < -1} {
+	set notvalid 1
+	}
+}
+if {$notvalid == "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 myset.15 none
+	return
+}
+	blacktools:tell $nick $host $hand $chan $chan1 myset.16 $show_greet
+	setuser $hand XTRA OUTPUT_COLORS [string tolower $arg]
+	}
+}
+
+mychan {
+if {[matchattr $hand mno|MAOV $chan]} {
+if {$typez == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
+		}
+	}
+	return
+}
+if {[string equal -nocase $typez "reset"]} {
+	setuser $hand XTRA MYCHAN
+	blacktools:tell $nick $host $hand $chan $chan1 myset.11 $flags
+	return
+}
+if {[string equal -nocase $typez "show"]} {
+	set get [getuser $hand XTRA MYCHAN]
+if {$get == ""} { set get "N/A" }
+	blacktools:tell $nick $host $hand $chan $chan1 myset.12 "$flags $get"
+	return
+}
+
+if {![regexp {^[&#]} $typez]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+		}
+if {![validchan $typez]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+		}
+	setuser $hand XTRA MYCHAN [string tolower $typez]
+	blacktools:tell $nick $host $hand $chan $chan1 myset.10 $typez
+	}
+}
+
+mychar {
+if {[matchattr $hand mno|MAOV $chan]} {
+if {$typez == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
+		}
+	}
+	return
+}
+if {[string equal -nocase $typez "reset"]} {
+	setuser $hand XTRA MYCHAR
+	blacktools:tell $nick $host $hand $chan $chan1 myset.11 $flags
+	return
+}
+if {[string equal -nocase $typez "show"]} {
+	set get [getuser $hand XTRA MYCHAR]
+if {$get == ""} { set get "N/A" }
+	blacktools:tell $nick $host $hand $chan $chan1 myset.12 "$flags $get"
+	return
+}
+	setuser $hand XTRA MYCHAR [string tolower $typez]
+	blacktools:tell $nick $host $hand $chan $chan1 myset.18 $typez
+	}
+}
+
+default {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "myset"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "myset"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "myset"
+				}
+			}
+		}
+	}
+}
+
+################################# set #################################
+
+proc set:process {nick host hand chan chan1 flags type type1} {
+global botnick black
+	set cmd_status [btcmd:status $chan $hand "set" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+	set getlang [string tolower [setting:get $chan lang]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+	set flags [string tolower $flags]
+if {[matchattr $hand q]} { 
+	blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { 
+	blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+	set choption [check_option $nick $host $hand $chan $chan1 $flags $type1 "$flags"]
+if {$choption == "0"} { return }
+if {![validchan $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+}
+if {[regexp {^[+-]} $flags]} {
+	set black_setting [setting:exists $flags]
+if {$black_setting == "1"} {
+	set iflag [string map {"+" ""
+							"-" ""} $flags]
+if {![matchattr $hand n]} {
+if {[string equal -nocase "$iflag" "invisible"] || [string equal -nocase "$iflag" "forward"]} {
+		blacktools:tell $nick $host $hand $chan $chan1 set.5 $flags
+		return
+	}
+}
+	set status [setting:status $chan $flags ""]
+	switch $status {
+	0 {
+if {[regexp {^[-]} $flags]} {
+	blacktools:tell $nick $host $hand $chan $chan1 set.4 $flags
+	return
+	}
+	blacktools:tell $nick $host $hand $chan $chan1 set.6 $flags
+	}
+	1 {
+if {[regexp {^[+]} $flags]} {
+	blacktools:tell $nick $host $hand $chan $chan1 set.4 $flags
+	return
+	}
+	blacktools:tell $nick $host $hand $chan $chan1 set.6 $flags
+	}
+}
+
+if {[string equal -nocase "+xonly" $flags]} {
+if {![info exists black(logged)]} {
+	blacktools:tell $nick $host $hand $chan $chan1 login.3 none
+	return
+	}
+}
+
+	setting:set $chan $flags ""
+	
+if {[string equal -nocase "+anunt" $flags]} {
+if {[setting:get $chan anunt-showtime] != ""} {
+	set time [setting:get $chan anunt-showtime]
+		} else {
+	set time $black(anunttime)
+		}
+	set scan_time [time_return_minute $time]
+	set black(anunt:$chan:timer_start) $scan_time
+}
+
+if {[string equal -nocase "+topwords" $flags]} {
+	set black(topwords:$chan:timer_start) 1
+}
+
+if {[string equal -nocase "-anunt" $flags]} {
+if {[info exists black(anunt:$chan:timer_start)]} {
+	unset black(anunt:$chan:timer_start)
+	}
+if {[info exists black(anunt:counter:$chan)]} {
+	unset black(anunt:counter:$chan)
+	}
+}
+
+if {[string equal -nocase "-topwords" $flags]} {
+	set black(topwords:$chan:timer_start) 1
+if {[info exists black(topwords:$chan:timer_start)]} {
+	unset black(topwords:$chan:timer_start)
+	}
+if {[info exists black(topwords:counter:$chan)]} {
+	unset black(topwords:counter:$chan)
+	}
+}
+
+if {[string equal -nocase "-voiceme"]} {
+if {[info exists black(voiceme:stat:$chan)]} {
+	unset black(voiceme:stat:$chan)
+	}
+}
+
+if {[string equal -nocase "-voiceonmsg"]} {
+if {[info exists black(voiceonmsg:stat:$chan)]} {
+	unset black(voiceonmsg:stat:$chan)
+	}
+}
+
+if {[string equal -nocase "+quoteofday" $flags]} {
+if {[setting:get $chan quote-showtime] != ""} {
+	set time [setting:get $chan quote-showtime]
+		} else {
+	set time $black(quote:msgtime)
+		}
+	set scan_time [time_return_minute $time]
+	set black(quote:$chan:timer_start) $scan_time
+}
+
+if {[string equal -nocase "-quoteofday" $flags]} {
+if {[info exists black(quote:$chan:timer_start)]} {
+	unset black(quote:$chan:timer_start)
+	}
+if {[info exists black(quote:counter:$chan)]} {
+	unset black(quote:counter:$chan)
+	}
+}
+
+if {[string equal -nocase "+clonescan" $flags]} {
+if {[setting:get $chan clonescan-scantime] != ""} {
+	set time [setting:get $chan clonescan-scantime]
+		} else {
+	set time $black(clonescantime)
+		}
+	set scan_time [time_return_minute $time]
+	set black(clonescan:$chan:timer_start) $scan_time
+}
+
+if {[string equal -nocase "-clonescan" $flags]} {
+if {[info exists black(clonescan:$chan:timer_start)]} {
+	unset black(clonescan:$chan:timer_start)
+	}
+if {[info exists black(clonescan:counter:$chan)]} {
+	unset black(clonescan:counter:$chan)
+	}
+}
+
+if {[string equal -nocase "+antibadchan" $flags]} {
+if {[setting:get $chan badchan-scantime] != ""} {
+	set time [setting:get $chan badchan-scantime]
+		} else {
+	set time $black(badchan:scantime)
+		}
+	set scan_time [time_return_minute $time]
+	set black(badchan:$chan:timer_start) $scan_time
+}
+
+if {[string equal -nocase "+voiceme" $flags]} {
+if {[setting:get $chan voiceme-showtime] != ""} {
+	set time [setting:get $chan voiceme-showtime]
+		} else {
+	set time $black(voiceme:msgtime)
+		}
+	set scan_time [time_return_minute $time]
+	set black(voiceme:$chan:timer_start) $scan_time
+}
+
+if {[string equal -nocase "-voiceme" $flags]} {
+if {[info exists black(voiceme:$chan:timer_start)]} {
+	unset black(voiceme:$chan:timer_start)
+	}
+if {[info exists black(voiceme:counter:$chan)]} {
+	unset black(voiceme:counter:$chan)
+	}
+}
+
+
+if {[string equal -nocase "-antibadchan" $flags]} {
+if {[info exists black(badchan:$chan:timer_start)]} {
+	unset black(badchan:$chan:timer_start)
+	}
+if {[info exists black(badchan:counter:$chan)]} {
+	unset black(badchan:counter:$chan)
+	}
+}
+
+if {[string equal -nocase "+xonly" $flags]} {
+if {![info exists black(logged)]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.noxonly none
+	return
+	}
+}
+
+if {[string equal -nocase "+limit" $flags]} {
+	set black(limit:$chan:timer_start) 1
+}
+
+if {[string equal -nocase "+voiceonmsg" $flags]} {
+	set black(voiceonmsg:$chan:timer_start) 1
+}
+
+if {[string equal -nocase "-limit" $flags]} {
+if {[info exists black(limit:$chan:timer_start)]} {
+	unset black(limit:$chan:timer_start)
+	}
+}
+
+if {[string equal -nocase "+idleop" $flags] || [string equal -nocase "+idlevoice" $flags] || [string equal -nocase "+idlehalfop" $flags]} {
+	antidle:set $chan
+}
+
+if {[string equal -nocase "-idleop" $flags] || [string equal -nocase "-idlevoice" $flags] || [string equal -nocase "-idlehalfop" $flags]} {
+	antidle:unset $chan
+}
+
+if {[string equal -nocase "+antispam" $flags]} {
+if {[setting:get $chan antispam-scantime] != ""} {
+	set time [setting:get $chan antispam-scantime]
+		} else {
+	set time $black(spamcycle)
+		}
+	set scan_time [time_return_minute $time]
+	set black(antispam:$chan:timer_start) $scan_time
+}
+
+if {[string equal -nocase "-antispam" $flags]} {
+if {[info exists black(antispam:$chan:timer_start)]} {
+	unset black(antispam:$chan:timer_start)
+	}
+if {[info exists black(antispam:counter:$chan)]} {
+	unset black(antispam:counter:$chan)
+	}
+}
+
+if {[string equal -nocase "+securemode" $flags]} {
+	putserv "MODE $chan :+Dm"
+foreach tmr [utimers] {
+if {[string match "*securemode:timer*" [join [lindex $tmr 1]]]} {
+	return
+	}
+}
+	utimer 30 [list securemode:timer]
+}
+
+if {[string equal -nocase "-securemode" $flags]} {
+	set found_list 0
+	foreach tmr [utimers] {
+if {[string match "*securemode:timer*" [join [lindex $tmr 1]]]} {
+	putserv "MODE $chan :-Dm"
+	set replace(%chan%) $chan1
+	set text2 [black:color:set "" $black(say.$getlang.securemode.11)]
+	set reply2 [join $text2]
+	putserv "PRIVMSG $chan1 :[string map [array get replace] $reply2]"
+if {[info exists black(secure:$chan:list)]} {
+	set found_list 1
+if {[llength $black(secure:$chan:list)] > 0} {
+	foreach entry $black(secure:$chan:list) {
+	putserv "MODE $chan +v $entry"
+if {[info exists black(securecode:$entry:$chan)]} {
+	unset black(securecode:$entry:$chan)
+						}
+					}
+				}
+			}
+		}
+	}
+if {$found_list == "1"} {
+if {[info exists black(secure:$chan:list)]} {
+	unset black(secure:$chan:list)
+		}
+	}
+}
+	return
+}
+	set why [catch {channel set $chan $flags} error]
+if {$why == "1"} { blacktools:tell $nick $host $hand $chan $chan1 set.5 $flags
+	return
+} else {
+	channel set $chan $flags ; blacktools:tell $nick $host $hand $chan $chan1 set.6 $flags	
+}
+
+} else {
+if {[matchattr $hand nm]} {
+	set check_eggcmd [egg:setting_check $flags]
+if {$check_eggcmd == "1"} {
+	set return [egg:process $nick $host $hand $chan $chan1 $flags $type]
+if {$return == "0"} {
+	blacktools:tell $nick $host $hand $chan $chan1 set.2 "$flags $type"
+	} elseif {$return == "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 set.1 "$flags $type"
+	return
+	} else {
+	blacktools:tell $nick $host $hand $chan $chan1 set.9 "$flags $type"
+	return
+		}
+	return	
+	}
+}
+	set black_setting [setting:exists $flags]
+	set int_set [catch {channel set $chan $flags $type} error]
+if {$black_setting == "0" && $int_set == "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 set.7 "$flags $type"
+	return
+}
+	set choption 1
+	set checkflags $flags
+if {$choption == "0"} { return }
+
+if {[string equal -nocase "joinflood" $flags] || [string equal -nocase "antijoinflood-userset" $flags] || [string equal -nocase "antirepeat-setting" $flags] || [string equal -nocase "chanflood" $flags]} {
+if {![regexp {[0-9]:[0-9]} $type]} {
+	blacktools:tell $nick $host $hand $chan $chan1 set.7 "$flags $type"	
+	return
+	}
+}
+
+if {[string equal -nocase "url" $flags]} {
+if {$type == ""} {
+	blacktools:tell $nick $host $hand $chan $chan1 set.7 "$flags $type"
+	return
+	}
+}
+
+if {[string equal -nocase "badchan-bmethod" $flags] || [string equal -nocase "badnick-bmethod" $flags]} {
+if {[regexp {^[0-9]} $type] && [regexp {[a-z]} $type]} {
+	blacktools:tell $nick $host $hand $chan $chan1 set.7 "$flags $type"	
+	return
+	} elseif {![regexp {^[0-9]} $type]} {
+	blacktools:tell $nick $host $hand $chan $chan1 set.7 "$flags $type"	
+	return
+	} elseif {$type < 1 || $type > 2} {
+	blacktools:tell $nick $host $hand $chan $chan1 set.7 "$flags $type"	
+	return
+	}
+}
+
+if {[string equal -nocase "anunt-showtime" $flags]} {
+if {$type != ""} {
+	set scan_time [time_return_minute $type]
+if {$scan_time == "-1"} { 
+	set time $black(anunttime)
+	set scan_time [time_return_minute $time]
+}
+	set black(anunt:$chan:timer_start) $scan_time
+if {[info exists black(anunt:counter:$chan)]} {
+	set black(anunt:counter:$chan) 0
+		}
+	}
+}
+
+if {[string equal -nocase "voiceme-showtime" $flags]} {
+if {$type != ""} {
+	set scan_time [time_return_minute $type]
+if {$scan_time == "-1"} { 
+	set time $black(voiceme:msgtime)
+	set scan_time [time_return_minute $time]
+}
+	set black(voiceme:$chan:timer_start) $scan_time
+if {[info exists black(voiceme:counter:$chan)]} {
+	set black(voiceme:counter:$chan) 0
+		}
+	}
+}
+
+
+if {[string equal -nocase "quote-showtime" $flags]} {
+if {$type != ""} {
+	set scan_time [time_return_minute $type]
+if {$scan_time == "-1"} { 
+	set time $black(quote:msgtime)
+	set scan_time [time_return_minute $time]
+}
+	set black(quote:$chan:timer_start) $scan_time
+if {[info exists black(quote:counter:$chan)]} {
+	set black(quote:counter:$chan) 0
+		}
+	}
+}
+
+if {[string equal -nocase "badchan-scantime" $flags]} {
+if {$type != ""} {
+	set scan_time [time_return_minute $type]
+if {$scan_time == "-1"} { 
+	set time $black(badchan:scantime)
+	set scan_time [time_return_minute $time]
+}
+	set black(badchan:$chan:timer_start) $scan_time
+if {[info exists black(badchan:counter:$chan)]} {
+	set black(badchan:counter:$chan) 0
+		}
+	}
+}
+
+if {[string equal -nocase "idle-scantime" $flags]} {
+if {$type != ""} {
+	set scan_time [time_return_minute $type]
+if {$scan_time == "-1"} { 
+	set time $black(idleinterval)
+	set scan_time [time_return_minute $time]
+}
+	set black(idle:$chan:timer_start) $scan_time
+if {[info exists black(idle:counter:$chan)]} {
+	set black(idle:counter:$chan) 0
+		}
+	}
+}
+
+if {[string equal -nocase "antispam-scantime" $flags]} {
+if {$type != ""} {
+	set scan_time [time_return_minute $type]
+if {$scan_time == "-1"} { 
+	set time $black(spamcycle)
+	set scan_time [time_return_minute $time]
+}
+	set black(antispam:$chan:timer_start) $scan_time
+if {[info exists black(antispam:counter:$chan)]} {
+	set black(antispam:counter:$chan) 0
+		}
+	}
+}
+
+if {[string equal -nocase "clonescan-scantime" $flags]} {
+if {$type != ""} {
+	set time ""
+	set scan_time [time_return_minute $type]
+if {$scan_time == "-1"} { 
+	set time $black(clonescantime) 
+	set scan_time [time_return_minute $time]
+}
+	set black(clonescan:$chan:timer_start) $scan_time
+if {[info exists black(clonescan:counter:$chan)]} {
+	set black(clonescan:counter:$chan) 0
+		}
+	}
+}
+
+if {[string equal -nocase "leave-method" $flags]} {
+	if {![string equal -nocase "notice" $type] && ![string equal -nocase "privmsg" $type]} {
+	set choption [check_option $nick $host $hand $chan $chan1 $type $type1 "leave"]
+if {$choption == "0"} { return }
+	}
+}
+
+if {[string equal -nocase "greet-method" $flags]} {
+	if {![string equal -nocase "notice" $type] && ![string equal -nocase "privmsg" $type]} {
+	set choption [check_option $nick $host $hand $chan $chan1 $type $type1 "greet"]
+if {$choption == "0"} { return }
+	}
+}
+
+if {[string equal -nocase "guestnick-msgmethod" $flags]} {
+	if {![string equal -nocase "notice" $type] && ![string equal -nocase "privmsg" $type] && ![string equal -nocase "chan" $type]} {
+	set choption [check_option $nick $host $hand $chan $chan1 $type $type1 "guestnick"]
+if {$choption == "0"} { return }
+	}
+}
+
+if {[string match -nocase "backchan" $flags]} {
+if {![validchan $type]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none	
+	return
+	}
+}
+
+if {[string equal -nocase "xbanlevel" $flags]} {
+if {![regexp {^[0-9]} $type]} {
+	blacktools:tell $nick $host $hand $chan $chan1 set.7 "$flags $type"
+	return
+	}
+if {$type < 75 || $type > 500} {
+	blacktools:tell $nick $host $hand $chan $chan1 set.7 "$flags $type"
+	return
+	}
+}
+
+if {[string equal -nocase "vprotect" $flags]} {
+if {![string equal -nocase "on" $type] && ![string equal -nocase "off" $type]} {
+	set choption [check_option $nick $host $hand $chan $chan1 $type $type1 "vprotect"]
+if {$choption == "0"} { return }
+	}
+} 
+
+if {[string equal -nocase "oprotect" $flags]} {
+if {![string equal -nocase "on" $type] && ![string equal -nocase "off" $type]} {
+	set choption [check_option $nick $host $hand $chan $chan1 $type $type1 "oprotect"]
+if {$choption == "0"} { return }
+	}
+}
+
+if {[string equal -nocase "clonescan-action" $flags]} {
+if {![string equal -nocase "message" $type] && ![string equal -nocase "ban" $type]} {
+	set choption [check_option $nick $host $hand $chan $chan1 $type $type1 "clonescan"]
+if {$choption == "0"} { return }
+	}	
+}
+
+if {[string equal -nocase "lang" $flags]} {
+if {![file exists "$black(dirname)/BlackTools/lang/BlackTools.[string tolower $type].lang.tcl"]} {
+	set choption [check_option $nick $host $hand $chan $chan1 $type $type1 "language"]
+if {$choption == "0"} { return }
+	}
+}
+	set black_setting [setting:exists $flags]
+if {$black_setting == "2"} {
+	set status [setting:status $chan $flags $type]
+if {$status != "0"} {
+	blacktools:tell $nick $host $hand $chan $chan1 set.3 "$flags $type"
+	return
+}
+	set split_flags [split $flags "-"]
+	set flags_2 [lindex $split_flags 1]
+if {[string equal -nocase $flags_2 "banmethod"] || [string equal -nocase $flags "banmethod"]} {
+	set validnum [check:validnum $type "banmethod" $type1 $nick $host $hand $chan $chan1]
+	if {$validnum == "0"} { return }
+}
+
+if {[string equal -nocase $flags_2 "bantime"] || [string equal -nocase $flags "banmethod"]} {
+	set return_time [time_return_minute $type]
+if {$return_time == "-1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 set.7 "$flags $type"
+	return
+	}
+}
+
+if {[string equal -nocase $flags_2 "banmask"] || [string equal -nocase $flags "banmask"]} {
+	set validnum [check:validnum2 $type "banmask" $type1 $nick $host $hand $chan $chan1]
+	if {$validnum == "0"} { return }
+}
+	set encoded [join [encoding convertto utf-8 $type]]
+	setting:set $chan $flags $encoded
+	blacktools:tell $nick $host $hand $chan $chan1 set.8 "$flags $type"
+	return
+}
+	set why [catch {channel set $chan $flags $type} error]
+if {$why == "1"} { blacktools:tell $nick $host $hand $chan $chan1 set.7 "$flags $type"
+	return
+} else {
+if {[string equal -nocase $flags "backchan"]} {
+if {![validchan $type]} {
+	blacktools:tell $nick $host $hand $chan $chan1 set.12 $type
+	return
+	}	
+}
+	channel set $chan $flags $type ; blacktools:tell $nick $host $hand $chan $chan1 set.8 "$flags $type" 
+		}
+	}
+}
+
+################################# unset #######################################
+
+proc unset:process {nick host hand chan chan1 setting type} {
+	global black
+	set cmd_status [btcmd:status $chan $hand "unset" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+if {$setting == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "unset"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "unset"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "unset"
+		}
+	}
+	return
+}
+	
+if {[string equal -nocase $setting "flag"]} {
+foreach f $black(extra_flag) {
+if {([string equal -nocase $f "invisible"] || [string equal -nocase $f "forward"]) && [matchattr $hand mo|M $chan] && ![matchattr $hand n]} {
+	continue
+}
+	unset:all $chan $f
+}
+	blacktools:tell $nick $host $hand $chan $chan1 unset.4 none
+	return
+}
+
+if {[string equal -nocase $setting "str"]} {
+foreach f $black(extra_str) {
+	unset:all $chan $f
+}
+	blacktools:tell $nick $host $hand $chan $chan1 unset.5 none
+	return
+}
+	set timestamp [clock format [clock seconds] -format {%Y%m%d%H%M%S}]
+	set temp "$black(tempdir)/extra_temp.$timestamp"
+	set black_setting [setting:exists $setting]
+if {$black_setting != "0"} {
+if {[string equal -nocase $setting "invisible"] || [string equal -nocase $setting "forward"] && ![matchattr $hand n]} {
+	blacktools:tell $nick $host $hand $chan $chan1 unset.1 $setting
+	return
+}
+	set status [setting:get $chan $setting]
+if {$status != "" && $status != "0"} {
+	blacktools:tell $nick $host $hand $chan $chan1 unset.2 $setting
+	set file [open $black(extra_file) r]
+	set tempwrite [open $temp w]
+while {[gets $file line] != -1} {
+	set c [lindex [split $line] 0]
+	set gettype [lindex [split $line] 1]
+	set comp [lindex [split $line] 2]
+if {$black_setting == "1"} {
+	set comp [string map {
+	"+" ""
+	"-" ""} $comp]
+}
+if {[string equal -nocase $c $chan] && [string equal -nocase $gettype "XTRA"] && [string equal -nocase $comp $setting]} {
+	continue
+} else {
+	puts $tempwrite $line
+		}	 
+    }
+	close $tempwrite
+	close $file
+    file rename -force $temp $black(extra_file)
+	
+if {[string equal -nocase $setting "clonescan-scantime"]} {
+if {[info exists black(clonescan:counter:$chan)]} {
+	unset black(clonescan:counter:$chan)
+		}
+if {[info exists black(clonescan:$chan:timer_start)]} {
+	set black(clonescan:$chan:timer_start) 0
+	}
+}
+
+if {[string equal -nocase $setting "anunt-showtime"]} {
+if {[info exists black(anunt:counter:$chan)]} {
+	unset black(anunt:counter:$chan)
+		}
+if {[info exists black(anunt:$chan:timer_start)]} {
+	set black(anunt:$chan:timer_start) 0
+	}
+}
+
+if {[string equal -nocase $setting "quote-showtime"]} {
+if {[info exists black(quote:counter:$chan)]} {
+	unset black(quote:counter:$chan)
+		}
+if {[info exists black(quote:$chan:timer_start)]} {
+	set black(quote:$chan:timer_start) 0
+	}
+}
+
+if {[string equal -nocase $setting "badchan-scantime"]} {
+if {[info exists black(badchan:counter:$chan)]} {
+	unset black(badchan:counter:$chan)
+		}
+if {[info exists black(badchan:$chan:timer_start)]} {
+	set black(badchan:$chan:timer_start) 0
+	}
+}
+
+if {[string equal -nocase $setting "idle-scantime"]} {
+if {[info exists black(idle:counter:$chan)]} {
+	unset black(idle:counter:$chan)
+		}
+if {[info exists black(idle:$chan:timer_start)]} {
+	set black(idle:$chan:timer_start) 0
+	}
+}
+	} else {
+	blacktools:tell $nick $host $hand $chan $chan1 unset.3 $setting 
+	}
+} else {
+	blacktools:tell $nick $host $hand $chan $chan1 unset.1 $setting
+	}		
+}
+
+proc unset:all {chan setting} {
+	global black
+	set timestamp [clock format [clock seconds] -format {%Y%m%d%H%M%S}]
+	set temp "$black(tempdir)/extra_temp.$timestamp"
+	set file [open $black(extra_file) r]
+	set tempwrite [open $temp w]
+while {[gets $file line] != -1} {
+	set c [lindex [split $line] 0]
+	set gettype [lindex [split $line] 1]
+	set comp [lindex [split $line] 2]
+if {[regexp {^[+-]} $comp]} {
+	set comp [string map {
+	"+" ""
+	"-" ""} $comp]
+}
+if {[string equal -nocase $c $chan] && [string equal -nocase $gettype "XTRA"] && [string equal -nocase $comp $setting]} {	
+		continue
+		} else {
+	puts $tempwrite $line
+		}	
+	}
+	close $tempwrite
+	close $file
+    file rename -force $temp $black(extra_file)
+}
+
+proc check:validnum {num flags type1 nick host hand chan chan1} {
+	global black
+	if {![regexp {^[0-9]} $num]} {
+if {$type1 == "0"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr $flags
+}
+if {$type1 == "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick $flags
+		}
+	return 0
+	}
+if {($num < 1) || ($num > 7)} {
+if {$type1 == "0"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr $flags
+}
+if {$type1 == "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick $flags
+		}
+	return 0
+	}
+	return 1
+}
+
+proc check:validnum2 {num flags type1 nick host hand chan chan1} {
+	global black
+	if {![regexp {^[0-9]} $num]} {
+if {$type1 == "0"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr $flags
+}
+if {$type1 == "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick $flags
+		}
+	return 0
+	}
+if {($num < 1) || ($num > 5)} {
+if {$type1 == "0"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr $flags
+}
+if {$type1 == "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick $flags
+		}
+	return 0
+	}
+	return 1
+}
+
+
+############################### ignore ######################################
+
+proc ignore:process {nick host hand chan chan1 what mask time reason type} {
+global botnick black
+	set cmd_status [btcmd:status $chan $hand "ignore" 0]
+	set show_mask $mask
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { 
+	blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { 
+	blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+
+if {$what == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "ignore"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "ignore"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "ignore"
+		}
+	}
+}
+switch -exact -- [string tolower $what] {
+
+list {
+if {[llength [ignorelist]] == "0"} { blacktools:tell $nick $host $hand $chan $chan1 ignore.3 none
+	return
+}
+
+foreach ig [ignorelist] {
+	set hostig [lindex $ig 0]
+	set byig [lindex $ig 4]
+	set bytime [lindex $ig 2]
+	set reasig [lindex $ig 1]
+if {$bytime != "0"} {
+	set bytime [clock format $bytime -format %D-%H:%M:%S]
+} else { set bytime "-"}
+	blacktools:tell $nick $host $hand $chan $chan1 ignore.4 "$hostig $byig $bytime [join $reasig]" 
+	}
+}
+
+add {
+
+if {$mask == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "ignore"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "ignore"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "ignore"
+		}
+	}
+	return
+}
+
+if {[isignore $mask]} {
+	blacktools:tell $nick $host $hand $chan $chan1 ignore.5 $show_mask
+	return
+}
+
+if {![regexp {[!]} $mask]} {
+	switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "ignore"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "ignore"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "ignore"
+		}
+	}
+	return
+}
+	set check_ignore [ignore:stop $mask]
+if {$check_ignore != ""} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.validuser $check_ignore
+	return
+}
+
+if {![regexp {^[0-9]} $time]} {
+	set time $black(ignore:default_time)
+}
+	set ignore_time [time_return_minute $time]
+
+if {$reason == ""} { set reason "N/A" }
+	newignore $mask $hand $reason $ignore_time
+	blacktools:tell $nick $host $hand $chan $chan1 ignore.6 "$show_mask $time $reason"
+}
+
+del {
+if {$mask == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "ignore"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "ignore"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "ignore"
+		}
+	}
+	return
+}
+
+if {[isignore $mask]} {
+	killignore $mask
+} else { blacktools:tell $nick $host $hand $chan $chan1 ignore.8 $show_mask
+	return
+} 
+	blacktools:tell $nick $host $hand $chan $chan1 ignore.9 $show_mask
+		}
+default {
+	switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "ignore"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "ignore"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "ignore"
+		}
+			}
+		}
+	}
+}
+
+proc ignore:stop {host} {
+	global black
+		set finduser ""
+if {[userlist] != ""} {
+foreach usr [userlist] {
+	set hst [getuser $usr hosts]
+foreach hhost $hst {
+if {[string match -nocase $host $hhost] || [string match -nocase $hhost $host]} {
+	set finduser $usr
+				}
+			}
+		}
+	}
+	return $finduser
+}
+
+################################# show ################################
+
+proc show:process {nick host hand chan chan1 wich type} {
+global black botnick
+	set cmd_status [btcmd:status $chan $hand "show" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+	set getlang [string tolower [setting:get $chan lang]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+
+if {$wich == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "show"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "show"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "show"
+		}
+	}
+	return 0
+}
+
+if {![validchan $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+}
+	set setting_exists [setting:exists $wich]
+if {$setting_exists == "0"} {
+	set why [catch {channel get $chan $wich} error]
+if {$why == "1"} { blacktools:tell $nick $host $hand $chan $chan1 show.5 $wich
+	return
+} else {
+	set replyinfo [channel get $chan $wich]
+if {($replyinfo != "") && ($replyinfo == "1")} {
+	blacktools:tell $nick $host $hand $chan $chan1 show.7 "$wich"
+	return
+}
+if {($replyinfo != "") && ($replyinfo == "0")} {
+	blacktools:tell $nick $host $hand $chan $chan1 show.8 "$wich"
+	return
+}
+	blacktools:tell $nick $host $hand $chan $chan1 show.6 "$wich $replyinfo"
+	}
+	return
+}
+	set replyinfo [setting:get $chan $wich]
+if {$setting_exists == "1"} {
+
+if {([string equal -nocase $wich "invisible"] || [string equal -nocase $wich "forward"]) && ![matchattr $hand n]} {
+	blacktools:tell $nick $host $hand $chan $chan1 show.5 $wich
+	return
+}
+	
+if {[regexp {^[1]} $replyinfo]} {
+	blacktools:tell $nick $host $hand $chan $chan1 show.7 $wich
+	return
+}
+
+if {[regexp {^[0]} $replyinfo]} {
+	blacktools:tell $nick $host $hand $chan $chan1 show.8 $wich
+	return
+	}
+if {($replyinfo == "") && [string equal -nocase $wich "oprotect"] || [string equal -nocase $wich "vprotect"] || [string equal -nocase $wich "hoprotect"]} {
+	blacktools:tell $nick $host $hand $chan $chan1 show.7 $wich
+	return
+}
+if {$replyinfo == ""} {
+	blacktools:tell $nick $host $hand $chan $chan1 show.8 $wich
+	}
+	return
+}
+	set split_wich [split $wich "-"]
+	set name [lindex $split_wich 0]
+if {$replyinfo == ""} {
+switch -exact -- [string tolower $wich] {
+
+badnick-bmethod {
+	set replyinfo $black(badnbanmethod)
+}
+
+voiceme-showtime {
+	set replyinfo $black(voiceme:msgtime)
+}
+
+quote-showtime {
+	set replyinfo $black(quote:msgtime)
+}
+
+anunt-showtime {
+	set replyinfo $black(anunttime)
+}
+
+quitpartmsgflood-char {
+	set replyinfo $black(badquitpartmsgchar)
+}
+
+repetitivechars-char {
+	set replyinfo $black(repetitivechars:num)
+}
+
+antispam-scantime {
+	set replyinfo $black(spamcycle)
+}
+
+clonescan-scantime {
+	set replyinfo $black(clonescantime)
+}
+
+badchan-scantime {
+	set replyinfo $black(badchan:scantime)
+}
+
+idle-scantime {
+	set replyinfo $black(idleinterval)
+}
+
+lang {
+	set replyinfo $black(default_lang)
+}
+
+greet-method {
+	set replyinfo $black(greet:method)
+}
+
+leave-method {
+	set replyinfo $black(leave:method)
+}
+
+backchan {
+	set replyinfo $black(say.ro.gl.noset)
+}
+
+url {
+	set replyinfo $black(say.ro.gl.noset)
+}
+
+idlehalfopmax {
+	set replyinfo $black(idlehalfopmax)
+}
+
+nickflood-repeat {
+	set replyinfo $black(nickfloodrepeats)
+}
+
+w-message {
+	set replyinfo $black(say.$getlang.w.6)
+}
+
+antilongtextmax {
+	set replyinfo $black(longchar)
+}
+
+joinflood {
+	set replyinfo $black(joinflood:protect)
+}
+antijoinflood-userset {
+	set replyinfo $black(antijoinflood_user_joins)
+}
+
+chanflood {
+	set replyinfo $black(antichanfloodrepeats)
+}
+
+idleopmax {
+	set replyinfo $black(idleopmax)
+}
+
+idlevoicemax {
+	set replyinfo $black(idlevoicemax)
+}
+
+expirebans {
+	set replyinfo $black(default:bantime)
+}
+
+antirepeat-setting {
+set replyinfo $black(antirepeat:repeats)
+}
+
+gag-reason {
+	set replyinfo $black(say.$getlang.gag.6)
+}
+
+w-reason {
+	set len [llength $black(say.$getlang.w.5)] 
+    set random [expr int(rand()*$len)] 
+    set reply [lindex $black(say.$getlang.w.5) $random]
+	set replyinfo $reply
+}
+
+k-reason {
+	set len [llength $black(say.$getlang.k.5)] 
+    set random [expr int(rand()*$len)] 
+    set reply [lindex $black(say.$getlang.k.5) $random]
+	set replyinfo $reply
+}
+
+b-reason {
+	set len [llength $black(say.$getlang.b.5)] 
+    set random [expr int(rand()*$len)] 
+    set reply [lindex $black(say.$getlang.b.5) $random]
+	set replyinfo $reply
+}
+
+badchan-bmethod {
+	set replyinfo $black(badcbanmethod)
+}
+
+d-bantime {
+	set replyinfo $black(dbtime)
+}
+
+antispam-message {
+	set replyinfo $black(say.$getlang.antispam.2)
+}
+
+limit-default {
+	set replyinfo $black(limit:default)
+}
+
+clonescan-maxclone {
+	set replyinfo $black(maxclone)
+}
+
+clonescan-action {
+	set replyinfo "message"
+				}
+guestnick-message {
+	set replyinfo $black(say.$getlang.guestnick.10)
+				}
+guestnick-msgmethod {
+	set replyinfo $black(guestnick:msgmethod)
+				}
+voiceonmsg-idletime {
+	set replyinfo $black(voiceonmsg:idletime)
+}
+voiceonmsg-linenum {
+	set replyinfo $black(voiceonmsg:linenum)
+			}
+xbantime {
+	set replyinfo $black(chanserv:bantime)
+}
+
+xbanlevel {
+	set replyinfo $black(chanserv:banlevel)
+}
+default {
+	set replyinfo [show:details $wich $name $setting_exists $chan ""]
+			}
+		}
+	} else {
+	set replyinfo [show:details $wich $name $setting_exists $chan $replyinfo]
+	}
+	set remain_timer [show:getscantime:remain $wich $chan]
+if {$remain_timer == "-1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 show.6 "$wich [join $replyinfo]"
+	} else {
+	blacktools:tell $nick $host $hand $chan $chan1 show.4 "$wich [join $replyinfo] $remain_timer"
+	}
+}
+
+proc show:getscantime:remain {setting chan} {
+	global black
+	set remain ""
+	set mod [split $setting "-"]
+	set mod [lindex $mod 0]
+if {[info exists black($mod:$chan:timer_start)] && [info exists black($mod:counter:$chan)]} {
+	set remain [expr $black($mod:$chan:timer_start) - $black($mod:counter:$chan)]
+	}
+if {$remain == ""} {
+		return -1
+	} else { return $remain }
+}
+
+proc show:details {wich name setting_exists chan set} {
+	global black
+	set getlang [string tolower [setting:get $chan lang]]
+	set cmds "dr vr troll bot n id spam bw black stick d next badchan spam"
+	set replyinfo ""
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+if {[string equal -nocase $wich "$name-banmethod"]} {
+if {$set == ""} {
+	set replyinfo [show:getbanmethod $black($name:banmethod)]
+	} else {
+	set replyinfo [show:getbanmethod $set]
+	}
+}
+if {[string equal -nocase $wich "$name-banmask"]} {
+if {$set == ""} {
+	set replyinfo [show:getbanmask $black($name:banmask)]
+	} else {
+	set replyinfo [show:getbanmask $set]
+	}
+}
+
+if {$setting_exists == "2"} {
+	if {[string equal -nocase $wich "$name-bantime"]} {
+if {$set == ""} {
+	set replyinfo $black($name:bantime)
+			} else {
+	set replyinfo $set
+			}
+		}
+	}
+if {$setting_exists == "2"} {
+if {[string equal -nocase $wich "$name-warn"]} {
+if {$set == ""} {
+	set replyinfo $black(say.$getlang.$name.2)
+			} else {
+	set replyinfo $set
+			}
+		}
+	}
+if {$setting_exists == "2"} {
+	if {[string equal -nocase $wich "$name-reason"] && [lsearch -exact [string tolower $cmds] [string tolower $name]] > -1} {
+if {$set == ""} {
+	set replyinfo $black(say.$getlang.$name.5)
+				} else {
+	set replyinfo $set
+				}
+			}
+		}
+if {$setting_exists == "2" && $replyinfo == ""} {
+	if {[string equal -nocase $wich "$name-reason"]} {
+if {$set == ""} {
+	set replyinfo $black(say.$getlang.$name.1)
+			} else {
+	set replyinfo $set
+			}
+		}
+	}
+if {$replyinfo == ""} {
+	set replyinfo $set
+}
+	return $replyinfo
+}
+
+
+proc show:getbanmask {num} {
+	global black
+switch $num {
+	1 {
+	return "#1 - *!*@host"
+	}
+	2 {
+	return "#2 - *!user@host"
+	}
+	3 {
+	return "#3 - nick!user@host"
+	}
+	4 {
+	return "#4 - nick!*@*"
+	}
+	5 {
+	return "#5 - *!user@*"
+		}
+	}
+}
+
+proc show:getbanmethod {num} {
+	global black
+switch $num {
+	1 {
+	return "#1 - warn"
+	}
+	
+	2 {
+	return "#2 - kick"
+	}
+	
+	3 {
+	return "#3 - ban"
+	}
+	
+	4 {
+	return "#4 - warn -> kick"
+	}
+	
+	5 {
+	return "#5 - warn -> kick -> ban"
+	}
+	
+	6 {
+	return "#6 - kick -> ban"
+	}
+	7 {
+	return "#7 - warn -> ban"
+		}
+	}	
+}
+
+############################## stats ##################################
+
+proc stats:process {nick host hand chan chan1 user option type} {
+global botnick black timezone
+	set cmd_status [btcmd:status $chan $hand "stats" 0]
+if {$cmd_status == "1"} { 
+	return
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+	set handle ""
+	set show_user $user
+	set validuser 0
+	set mask ""
+if {$user == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "stats"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "stats"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "stats"
+		}
+	}
+	return
+}
+
+if {![validchan $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+}
+
+if {[validuser $user]} {
+	set validuser 1
+} else {
+	set handle [nick2hand $user]
+if {[validuser $handle]} {
+	set user $handle
+	set validuser 1
+		}
+	}
+if {$validuser == "0"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.usernotexist $user
+	return
+}
+switch [string tolower $option] {
+	reset {
+if {[matchattr $hand nmo|M]} {
+	set reseted 0
+	set cmds_today [getuser $user XTRA CMD_STATS_TODAY($chan)]
+	set cmds_total [getuser $user XTRA CMD_STATS($chan)]
+
+if {$cmds_today != ""} {
+	set reseted 1
+	setuser $user XTRA CMD_STATS_TODAY($chan)
+}
+if {$cmds_total != ""} {
+	set reseted 1
+	setuser $user XTRA CMD_STATS($chan)
+}
+if {$reseted == "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 stats.5 $user
+} else {
+	blacktools:tell $nick $host $hand $chan $chan1 stats.1 $user	
+			}
+		}
+	}
+	total {
+	stats:process:show $nick $host $hand $chan $chan1 $user "CMD_STATS($chan)"
+	}
+	default {
+	stats:process:show $nick $host $hand $chan $chan1 $user "CMD_STATS_TODAY($chan)"
+		}
+	}
+}
+
+proc stats:process:show {nick host hand chan chan1 user option} {
+	global black lastbind
+	set cmds [getuser $user XTRA $option]
+	set stats ""
+	set total 0
+	set total_k 0
+	set cmds_gl ""
+if {[matchattr $hand nmo]} {
+	set cmds_gl [getuser $user XTRA BANS(GLOBAL)]
+if {$cmds_gl == ""} {set cmds_gl 0 }
+}
+	
+if {$cmds == ""} {
+	blacktools:tell $nick $host $hand $chan $chan1 stats.1 $user
+	return
+}
+foreach stat $cmds {
+if {$stat != ""} {
+	set split_stat [split $stat ":"]
+	set cmd [lindex $split_stat 0]
+	set num [lindex $split_stat 1]
+if {[string equal -nocase "k" $cmd] || [string equal -nocase "w" $cmd]} {
+	set total_k [expr $total_k + $num]
+} else {
+	set total [expr $total + $num]
+}
+	lappend stats "[black:color "1" $hand $cmd] ([black:color "2" $hand $num])"
+	}
+}
+
+if {[matchattr $hand nmo]} {
+if {[string equal -nocase "CMD_STATS_TODAY($chan)" $option]} {
+	blacktools:tell $nick $host $hand $chan $chan1 stats.2 "$user $total $total_k [join $stats " ; "]"
+} else {
+	blacktools:tell $nick $host $hand $chan $chan1 stats.4 "$user $total $cmds_gl $total_k [join $stats " ; "]"
+		}
+	} else {
+if {[string equal -nocase "CMD_STATS_TODAY($chan)" $option]} {
+	blacktools:tell $nick $host $hand $chan $chan1 stats.2 "$user $total $total_k [join $stats " ; "]"
+} else {
+	blacktools:tell $nick $host $hand $chan $chan1 stats.3 "$user $total $total_k [join $stats " ; "]"
+		}	
+	}
+}
+
+################################# r #######################################
+
+proc topic:refresh {nick host hand chan chan1 arg} {
+	global black lastbind botnick
+	set cmd_status [btcmd:status $chan $hand "r" 0]
+if {$cmd_status == "1"} { 
+	return
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+
+if {![validchan $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+}
+if {![onchan $botnick $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.notonchan none
+	return
+}
+if {![botisop $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.noop none
+	return
+}
+	set chantopic [topic $chan]
+	set getlang [string tolower [setting:get $chan lang]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+if {$chantopic != ""} {
+	set top "$black(say.$getlang.r.1)" 
+	set len [llength $top] 
+    set random [expr int(rand()*$len)] 
+    set top [lindex $top $random]
+	set text [black:color:set "" $top]
+	set reply [join $text]
+	putserv "TOPIC $chan :$reply"
+	putserv "TOPIC $chan :$chantopic"
+	} else {
+	blacktools:tell $nick $host $hand $chan $chan1 r.2 none
+	}
+}
+
+
+############################### omsg ###################################
+
+
+proc omsg:process {nick host hand chan chan1 who msg type} {
+	global black
+	set cmd_status [btcmd:status $chan $hand "omsg" 0]
+if {$cmd_status == "1"} { 
+	return
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+	set chans ""
+
+if {$who == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "omsg"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "omsg"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "omsg"
+		}
+	}
+	return
+}
+
+if {$msg == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "omsg"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "omsg"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "omsg"
+		}
+	}
+	return
+}
+
+if {[string equal -nocase $who "all"]} {
+	foreach c [channels] {
+if {![setting:get $c invisible]} {
+if {[matchattr $hand $black(accessflags) $c]} {
+if {[botisop $c]} {
+	lappend chans $c
+				}
+			}
+		}
+	}
+if {$chans == ""} {
+	return
+}
+	blacktools:tell $nick $host $hand $chan $chan1 omsg.1 [join $chans ", "]
+	omsg:act $hand $chans 0 $msg
+	return
+}
+
+if {![validchan $who]} { 
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+}
+
+if {[matchattr $hand $black(accessflags) $who]} {
+if {![botisop $who]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.noop none
+	return
+}
+	putserv "NOTICE @$who :\[BT\] ($hand) $msg"
+	blacktools:tell $nick $host $hand $chan $chan1 omsg.1 $who
+	}
+}
+
+proc omsg:act {hand chans number msg} {
+	global black
+	set chan [lindex $chans $number]
+	putserv "NOTICE @$chan :\[BT\] ($hand) $msg"
+	set number [expr $number + 1]
+if {[lindex $chans $number] != ""} {
+	utimer 2 [list omsg:act $hand $chans $number $msg]
+	}
+}
+
+##############
+#########################################################################
+##   END                                                               ##
+#########################################################################

+ 2529 - 0
BlackTools2.5.2/Commands/BT.Manual.tcl

@@ -0,0 +1,2529 @@
+#########################################################################
+##          BlackTools - The Ultimate Channel Control Script           ##
+##                    One TCL. One smart Eggdrop                       ##
+#########################################################################
+###########################   MANUAL TCL   ##############################
+#########################################################################
+##						                       ##
+##   BlackTools  : http://blacktools.tclscripts.net	               ##
+##   Bugs report : http://www.tclscripts.net/	                       ##
+##   GitHub page : https://github.com/tclscripts/BlackToolS-TCL-script ##
+##   Online Help : irc://irc.undernet.org/tcl-help 	               ##
+##                 #TCL-HELP / UnderNet                                ##
+##                 You can ask in english or romanian                  ##
+##					                               ##
+#########################################################################
+
+proc man:process {nick host hand chan chan1 type command} {
+	global black count
+	set cmd_status [btcmd:status $chan $hand "man" 0]
+if {$cmd_status == "1"} { 
+	return
+}
+	set getlang [string tolower [getuser $hand XTRA OUTPUT_LANG]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+	set number [scan $black(antiflood:cmd) %\[^:\]]
+	set timer [scan $black(antiflood:cmd) %*\[^:\]:%s]
+if {[info exists black(flood:activ:$host)]} {
+foreach tmr [utimers] {
+if {[string match "*black(flood:activ:$host)*" [join [lindex $tmr 1]]]} {
+	set time [lindex $tmr 0]
+	}
+}
+	blacktools:tell $nick $host $hand $chan $chan1 h.16 "$time man"
+	return
+}
+	foreach tmr [utimers] {
+if {[string match "*count(floodcmd:$host:$chan)*" [join [lindex $tmr 1]]]} {
+	killutimer [lindex $tmr 2]
+	}
+}
+if {![info exists count(floodcmd:$host:$chan)]} { 
+	set count(floodcmd:$host:$chan) 0 
+}
+	incr count(floodcmd:$host:$chan)
+	utimer $timer [list unset:floodcmd $host $chan]
+
+if {$count(floodcmd:$host:$chan) == "$number"} {
+	blacktools:tell $nick $host $hand $chan $chan1 h.16 "30 man"
+	set black(flood:activ:$host) 1
+	utimer 30 [list unset black(flood:activ:$host)]
+	return
+}	
+	
+if {$command == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1 none
+	}
+	
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2 none
+	}
+	
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2_1 none
+		}
+	}
+	return
+}
+if {[regexp {[+-]} $command]} {
+		set command [string map {"+" ""
+								 "-" ""	} $command]
+}
+switch $command {
+
+man {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.3 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.4 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.4_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.5 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+h {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.6 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.7 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.8 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.9 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.10 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+v {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.11 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.12 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.13 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.14 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.15 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+o {
+if {[matchattr $hand nmo|MAO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.16 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.17 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.18 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.19 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.20 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+ho {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.882 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.882_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.883 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.884 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.884_5 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+userlist {
+if {[matchattr $hand nmo|MAO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.22 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.23 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.24 none
+if {[matchattr $hand nmo|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.27 "$black(say.$getlang.level.7) $black(say.$getlang.level.6) $black(say.$getlang.level.5) $black(say.$getlang.level.4) $black(say.$getlang.level.3) $black(say.$getlang.level.8) $black(say.$getlang.level.2)"
+} else {
+	blacktools:tell $nick $host $hand $chan $chan1 man.26 "$black(say.$getlang.level.7) $black(say.$getlang.level.6) $black(say.$getlang.level.5) $black(say.$getlang.level.4) $black(say.$getlang.level.3)"
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+version {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.28 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.29 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.30 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+info {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.31 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.32 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.33 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.34 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+act {
+if {[matchattr $hand nmo|MA $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.35 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.36 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.37 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+t {
+if {[matchattr $hand nmo|MAO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.38 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.39 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.40 none
+if {[matchattr $hand nmo|M]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.41 none
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+cycle {
+if {[matchattr $hand nmo|MAO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.42 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.43 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.44 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+mode {
+if {[matchattr $hand nmo|MAO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.45 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.46 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.47 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+i {
+if {[matchattr $hand nmo|MAVO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.48 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.49 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.50 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+k {
+if {[matchattr $hand nmo|MAVO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.62 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.63 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.64 none
+if {[matchattr $hand nmo|M]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.65 none
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+w {
+if {[matchattr $hand nmo|MAO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.66 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.67 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.68 none
+if {[matchattr $hand nmo|M]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.69 none
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+sb {
+if {[matchattr $hand nmo|MAVO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.74 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.75 none
+if {[matchattr $hand nmo]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.77 none
+} else {
+	blacktools:tell $nick $host $hand $chan $chan1 man.76 none
+	}
+	blacktools:tell $nick $host $hand $chan $chan1 man.78 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+id {
+if {[matchattr $hand nmo|MAO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.79 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.80 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.81 none
+if {[matchattr $hand nmo|M]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.82 none
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+n {
+if {[matchattr $hand nmo|MAO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.83 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.84 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.85 none
+if {[matchattr $hand nmo|M]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.86 none
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+spam {
+if {[matchattr $hand nmo|MAO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.87 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.88 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.89 none
+if {[matchattr $hand nmo|M]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.90 none
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+dr {
+if {[matchattr $hand nmo|MAO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.91 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.92 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.93 none
+if {[matchattr $hand nmo|M]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.94 none
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+b {
+if {[matchattr $hand nmo|MAO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.95 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.96 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.97 none
+if {[matchattr $hand nmo]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.99 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.100 none
+} else { 
+	blacktools:tell $nick $host $hand $chan $chan1 man.98 none 
+	}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+ub {
+if {[matchattr $hand nmo|MAO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.101 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.102 none
+if {[matchattr $hand nmo]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.104 none
+} else { 
+	blacktools:tell $nick $host $hand $chan $chan1 man.103 none 
+	}
+	blacktools:tell $nick $host $hand $chan $chan1 man.105 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+bot {
+if {[matchattr $hand nmo|MAO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.106 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.107 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.108 none
+if {[matchattr $hand nmo|M]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.109 none
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+bw {
+if {[matchattr $hand nmo|MAO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.110 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.111 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.112 none
+if {[matchattr $hand nmo|M]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.113 none
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+black {
+if {[matchattr $hand nmo|MA $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.114 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.115 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.116 none
+if {[matchattr $hand nmo|M]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.117 none
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+stick {
+if {[matchattr $hand nmo|MA $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.118 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.118_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.119 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.120 none
+if {[matchattr $hand nmo|M]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.121 none
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+gag {
+if {[matchattr $hand nmo|MAO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.122 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.122_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.123 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.124 none
+if {[matchattr $hand nmo|M]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.125 none
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+ungag {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.149 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.150 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.151 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+add {
+if {[matchattr $hand nmo|MA $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.126 "$black(chanserv) $black(hostadd)"
+	blacktools:tell $nick $host $hand $chan $chan1 man.127 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.128 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.134 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.135 none
+if {[matchattr $hand n]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.27 "$black(say.$getlang.level.7) $black(say.$getlang.level.6) $black(say.$getlang.level.5) $black(say.$getlang.level.4) $black(say.$getlang.level.3) $black(say.$getlang.level.8) $black(say.$getlang.level.2)"
+} elseif {[matchattr $hand m]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.26 "$black(say.$getlang.level.7) $black(say.$getlang.level.6) $black(say.$getlang.level.5) $black(say.$getlang.level.4) $black(say.$getlang.level.3) $black(say.$getlang.level.8)" 
+		} elseif {[matchattr $hand o]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.26 "$black(say.$getlang.level.7) $black(say.$getlang.level.6) $black(say.$getlang.level.5) $black(say.$getlang.level.4) $black(say.$getlang.level.3)" 
+	} elseif {[matchattr $hand -|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.25 "$black(say.$getlang.level.7) $black(say.$getlang.level.6) $black(say.$getlang.level.5) $black(say.$getlang.level.4)"	
+		} elseif {[matchattr $hand -|A $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.28_1 "$black(say.$getlang.level.7) $black(say.$getlang.level.6) $black(say.$getlang.level.5)"	
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+adduser {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.136 none
+	}	
+}
+
+
+delacc {
+if {[matchattr $hand nmo|MA $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.142 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.142_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.143 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.144 none
+if {[matchattr $hand nm]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.145 none
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+del {
+if {[matchattr $hand nmo|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.146 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.147 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.148 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+banlist {
+if {[matchattr $hand nmo|MAO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.152 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.153 none
+if {[matchattr $hand nm]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.155 none
+} else {
+	blacktools:tell $nick $host $hand $chan $chan1 man.154 none	
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+addhost {
+if {[matchattr $hand nmo|MA $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.156 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.157 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.158 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+delhost {
+if {[matchattr $hand nmo|MA $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.159 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.160 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.161 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+chuser {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.162 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.163 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.164 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+s {
+if {[matchattr $hand nmo|MA $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.165 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.165_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.165_2 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.166 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.167 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+us {
+if {[matchattr $hand nmo|MA $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.168 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.168_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.169 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.170 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+auto {
+if {[matchattr $hand nmo|MA $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.171 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.172 none
+if {[matchattr $hand nm]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.176 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.175 none
+} else {
+	blacktools:tell $nick $host $hand $chan $chan1 man.174 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.173 none	
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+antipub {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.177 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.178 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.179 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.180 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.180_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.181 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+antinotice {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.183 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.184 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.185 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.186 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.187 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+antictcp {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.188 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.189 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.190 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.191 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.192 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+antibadword {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.193 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.194 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.195 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.196 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.197 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.198 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+antilongtext {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.199 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.200 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.201 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.202 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.203 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+badquitpart {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.204 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.205 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.206 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.207 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.208 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.209 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+quitpartcolor {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1203 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1204 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1205 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1206 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+omsg {
+if {[matchattr $hand nmo|MAO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1207 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1208 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1209 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+showbadchan {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1210 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1211 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1212 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1213 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+showtroll {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1214 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1215 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1216 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1217 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+forward {
+if {[matchattr $hand n|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1218 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1219 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1220 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+expirebans {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1221 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1222 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1223 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1224 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1225 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+mb {
+if {[matchattr $hand nmo|MAO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1226 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1227 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1228 none
+if {[matchattr $hand nm]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1229 none
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+antibadquitpart {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.204 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.205 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.206 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.207 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.208 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.209 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+antispam {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.215 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.216 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.217 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.218 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.219 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none	
+	}	
+}
+
+antirepeat {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.221 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.222 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.223 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.224 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.225 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+anticolor {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.226 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.227 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.228 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.229 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.230 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+antibold {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.231 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.232 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.233 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.234 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.235 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+antiunderline {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.236 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.237 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.238 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.239 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.240 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+anticaps {
+if {[matchattr $hand nmo|M $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.241 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.242 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.243 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.244 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.245 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+badnick {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.246 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.247 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.248 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.249 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.250 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.251 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+badrealname {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.252 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.253 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.254 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.255 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.256 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.257 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+autoop {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.258 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.259 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.260 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+autovoice {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.261 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.262 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.263 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+antijoinflood {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.264 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.265 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.266 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.267 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.268 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+antichanflood {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.269 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.270 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.271 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.272 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.273 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+badident {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.274 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.275 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.276 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.277 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.278 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.279 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+showhandle {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.280 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.281 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.282 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+
+}
+
+showcount {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.283 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.284 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.285 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+showtime {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.286 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.287 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.288 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+ 
+showurl {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.289 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.290 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.291 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+xbantime {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.292 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.293 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.294 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+xbanlevel {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.295 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.296 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.297 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+oprotect {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.298 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.299 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.300 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+vprotect {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.301 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.302 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.303 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+hoprotect {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.304 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.305 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.306 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+showid {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.307 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.308 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.309 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+xtools {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.407 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.408 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.409 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+badchan {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.410 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.411 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.412 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.413 none
+if {[matchattr $hand nm]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.414 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.415 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.416 none
+} else {
+	blacktools:tell $nick $host $hand $chan $chan1 man.415 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.416 none
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none	
+	}
+}
+
+antibadchan {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.410 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.411 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.412 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.413 none
+if {[matchattr $hand nm]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.414 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.415 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.416 none
+} else {
+	blacktools:tell $nick $host $hand $chan $chan1 man.415 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.416 none
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none	
+	}
+}
+
+anunt {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.417 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.417_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.418 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.419 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.420 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.421 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+limit {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.422 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.423 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.424 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.425 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.426 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+topic {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.427 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.427_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.428 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.429 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.430 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+clonescan {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.431 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.432 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.433 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.433_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.434 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.435 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+seen {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.438_1 none
+if {[matchattr $hand nmo|M]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.436 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.437 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.438 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.439 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.440 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+		}
+	}
+}
+	
+greet {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.441 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.442 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.443 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.444 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.445 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.446 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+	
+leave {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.447 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.448 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.449 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.450 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.451 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.452 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+idle {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.453 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.453_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.454 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.455 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.456 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.457 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.458 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+idlevoice {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.458_1 none
+	}	
+}
+
+idleop {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.458_2 none
+	}	
+}
+
+idlehalfop {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.458_3 none
+	}	
+}
+
+chanreport {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.463 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.460 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.461 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.462 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+backchan {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.459 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.460 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.461 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.462 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+topwords {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.464 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.465 none
+if {[matchattr $hand nmo|M]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.466 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.467_1 none
+} else {
+	blacktools:tell $nick $host $hand $chan $chan1 man.467 none
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+	
+antitake {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.473 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.474 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.475 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+dontdeop {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.475_1 none
+	}
+}
+
+dontop {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.475_2 none
+	}
+}
+
+private {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.476 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.477 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.478 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.479 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.480 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.481 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+autobroadcast {
+if {[matchattr $hand nmo|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.482 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.483 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.484 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.485 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.486 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+silent {
+if {[matchattr $hand nmo|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.486_1 none
+	}
+}
+
+lang {
+if {[matchattr $hand nmo|AOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.487 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.487_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.488 none
+if {[matchattr $hand nmo|M]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.488 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.489 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.489_1 none
+} else { 
+	blacktools:tell $nick $host $hand $chan $chan1 man.489_1 none
+	}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+language {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.487 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.487_2 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.488 none
+if {[matchattr $hand nmo|M]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.489 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.489_1 none
+} else { 
+	blacktools:tell $nick $host $hand $chan $chan1 man.489_1 none
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+tcl {
+if {[matchattr $hand nm|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.490 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.491 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.492 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+next {
+if {[matchattr $hand nmo|M $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.493 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.494 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.495 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.496 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.497 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.498 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+uptime {
+if {[matchattr $hand nmo|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.605 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.606 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.607 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+status {
+if {[matchattr $hand nmo|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.608 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.609 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.610 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+set {
+if {[matchattr $hand nmo|M $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.611 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.612 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.613 none
+if {[matchattr $hand nmo]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.614 none
+} else { 
+	blacktools:tell $nick $host $hand $chan $chan1 man.615 none 
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+jump {
+if {[matchattr $hand nm|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.620 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.621 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.622 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+msg {
+if {[matchattr $hand nmo|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.623 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.624 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.625 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+broadcast {
+if {[matchattr $hand nm|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.626 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.627 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.628 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+ignore {
+if {[matchattr $hand nmo|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.629 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.629_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.630 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.631 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+chat {
+if {[matchattr $hand nmo|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.632 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.633 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.634 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+channels {
+if {[matchattr $hand nmo|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.638 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.639 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.640 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+nick {
+if {[matchattr $hand nm|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.641 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.642 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.643 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.643_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+restart {
+if {[matchattr $hand nm|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.644 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.645 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.646 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.647 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+rehash {
+if {[matchattr $hand nm|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.648 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.649 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.650 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+die {
+if {[matchattr $hand nm|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.651 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.652 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.653 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+suspend {
+if {[matchattr $hand nmo|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.654 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.655 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.656 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+unsuspend {
+if {[matchattr $hand nmo|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.657 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.658 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.659 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+save {
+if {[matchattr $hand nm|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.660 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.661 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.662 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+addchan {
+if {[matchattr $hand nmo|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.663 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.664 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.665 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.666 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+delchan {
+if {[matchattr $hand nmo|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.667 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.668 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.669 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+say {
+if {[matchattr $hand nmo|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.681 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.682 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.683 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+nologged {
+if {[matchattr $hand nmo|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.687 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.688 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.689 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+colors {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.771 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.772 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.773 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.774 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+reportnick {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.775 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.776 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.777 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.778 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.779 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+inviteban {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.780 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.781 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.782 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.783 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+badhost {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.784 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.785 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.786 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.787 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.787_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.788 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+nickflood {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.789 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.790 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.791 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.792 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+securemode {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.793 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.794 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.795 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.796 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.797 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+voiceme {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.820 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.821 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.822 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.823 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+onlyonmode {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.824 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.825 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.826 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.827 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.828 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+guestnick {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.838 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.839 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.840 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.841 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+cp {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.842 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.843 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.844 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.845 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+voiceonmsg {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.846 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.847 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.848 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.849 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.850 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+troll {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.851 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.852 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.853 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.854 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+vr {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.856 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.857 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.858 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.859 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.860 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+xonly {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.861 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.862 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.863 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.864 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.865 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+autotopic {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.866 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.867 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.868 none	
+	blacktools:tell $nick $host $hand $chan $chan1 man.869 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.870 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+myset {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.871 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.872 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.873 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.874 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.875 none
+if {[matchattr $hand nmo|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.878 none
+} else { 
+	blacktools:tell $nick $host $hand $chan $chan1 man.877 none 
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+r {
+if {[matchattr $hand nmo|MAO $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.885 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.886 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.887 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+seenlastmsg {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.888 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.889 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.890 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.891 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+quote {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.892 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.893 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.894 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.895 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.896 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+quoteofday {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.897 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.898 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.899 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.900 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+note {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.901 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.902 none
+if {[matchattr $hand nmo|M $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.903 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.904 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.905 none
+} else { 
+	blacktools:tell $nick $host $hand $chan $chan1 man.904 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.905 none	
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+bmethod {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.906 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.907 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.908 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.909 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+banmethod {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.910 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.907 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.908 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.909 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+banmask {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.911 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.912 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.913 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.914 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+url {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.916 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.917 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.918 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.919 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.920 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+timer {
+if {[matchattr $hand nm|- $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.921 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.921_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.922 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.923 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+enable {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.924 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.924_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.925 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.926 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+disable {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.927 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.927_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.928 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.929 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+
+stats {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.930 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.931 none
+if {[matchattr $hand nmo|M]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.932_1 none
+} else {
+	blacktools:tell $nick $host $hand $chan $chan1 man.932 none
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}	
+}
+
+activ {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.930_1 none
+	}
+}
+
+output {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.933 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.934 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.935 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+infoline {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.936 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.937 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.938 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+unset {
+if {[matchattr $hand nmo|M $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.939 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.940 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.941 none
+if {[matchattr $hand nm]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.942 none
+		}
+	blacktools:tell $nick $host $hand $chan $chan1 man.943 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+nextshortcmd {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.944 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.945 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.946 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.947 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+autoinvite {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.948 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.949 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.950 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+show {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.952 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.953 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.954 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+chanlink {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.955 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.956 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.957 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.958 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.958_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+link {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.955 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.956 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.957 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.958 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+accessonly {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.959 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.960 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.961 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.962 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.963 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+seenreply {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.964 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.965 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.966 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.967 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+spamjoinmessage {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.968 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.969 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.970 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.971 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.972 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+strictsecured {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.973 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.974 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.975 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.976 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+noteexpire {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.977 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.977_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.978 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.979 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+mychan {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.980 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.981 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.982 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+invisible {
+if {[matchattr $hand n|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.983 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.984 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.985 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.986 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+cmdchar {
+if {[matchattr $hand nm|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.994 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.995 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.996 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+mychar {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.987 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.988 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.989 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+defaultlang {
+if {[matchattr $hand nm|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.998 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.998_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.999 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1100 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+homechan {
+if {[matchattr $hand nm|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1102 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1103 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1104 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1105 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+realname {
+if {[matchattr $hand nm|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1107 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1108 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1109 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+away {
+if {[matchattr $hand nm|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1111 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1112 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1113 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1113_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+defaultoutput {
+if {[matchattr $hand nm|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1115 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1115_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1116 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1117 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+floodmenuprot {
+if {[matchattr $hand nm|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1119 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1120 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1121 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+floodmsgprot {
+if {[matchattr $hand nm|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1123 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1124 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1125 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+floodnotcprot {
+if {[matchattr $hand nm|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1127 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1128 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1129 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+chanremovesetting {
+if {[matchattr $hand nm|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1131 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1131_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1132 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1133 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+userexpire {
+if {[matchattr $hand nm|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1135 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1135_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1136 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1137 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+pagelimit {
+if {[matchattr $hand nm|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1139 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1140 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1141 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+login {
+if {[matchattr $hand nm|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1143 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1144 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1145 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+chanserv {
+if {[matchattr $hand nm|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1147 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1148 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1149 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+hostchanserv {
+if {[matchattr $hand nm|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1151 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1152 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1153 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+userlogin {
+if {[matchattr $hand nm|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1155 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1156 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1157 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+userpass {
+if {[matchattr $hand nm|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1159 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1160 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1161 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+addmask {
+if {[matchattr $hand nm|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1163 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1163_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1163_2 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1164 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1165 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+adddefaultmask {
+if {[matchattr $hand nm|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1167 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1168 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1169 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+antispamscantime {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1175 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1175_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1176 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1177 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+idlescantime {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1179 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1179_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1180 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1181 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+clonescanscantime {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1183 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1183_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1184 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1185 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+broadcastshowtime {
+if {[matchattr $hand nm|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1187 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1187_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1188 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1189 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+badchanscantime {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1191 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1191_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1192 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1193 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+anuntshowtime {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1195 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1195_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1196 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1197 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+quoteofdayshowtime {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1199 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1199_1 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1200 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+voicemeshowtime {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1230 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1231 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1232 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1233 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+badchanbanwait {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1234 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1235 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1236 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1237 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+badnickbanwait {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1238 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1239 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1240 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1241 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+badnickbmethod {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1242 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1243 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1244 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1245 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+badchanbmethod {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1246 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1247 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1248 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1249 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+repetitivechars {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1250 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1251 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1252 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1253 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1254 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+quitpartmsgflood {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1255 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1256 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1257 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1258 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1259 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+massfloodsilencetime {
+if {[matchattr $hand nmo|- $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1260 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1261 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1262 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1263 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1264 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+banmethodexpire {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1265 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1266 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1267 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1268 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+count {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1269 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1270 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1271 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1272 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.1273 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+bantime {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2101 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2102 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2103 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+chanmode {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2104 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2105 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2106 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+dontkickops {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2107 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2108 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2109 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+enforcebans {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2110 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2111 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2112 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+dynamicbans {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2113 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2114 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2115 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+userbans {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2116 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2117 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2118 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+autohalfop {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2122 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2123 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2124 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+bitch {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2128 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2129 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2130 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+protectops {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2134 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2135 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2136 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+
+protectfriends {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2137 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2138 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2139 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+protecthalfops {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2140 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2141 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2142 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+inactive {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2143 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2144 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2145 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+statuslog {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2146 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2147 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2148 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+static {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2149 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2150 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2151 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+revenge {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2152 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2153 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2154 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+revengebot {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2155 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2156 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2157 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+secret {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2158 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2159 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2160 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+shared {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2161 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2162 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2163 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+nodesynch {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2167 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2168 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2169 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+dynamicexempts {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2170 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2171 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2172 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+userexempts {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2173 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2174 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2175 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+dynamicinvites {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2176 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2177 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2178 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+userinvites {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2179 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2180 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2181 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+userexempts {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2173 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2174 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2175 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+floodctcp {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2182 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2183 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2184 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2185 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+floodjoin {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2186 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2187 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2188 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2189 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+floodkick {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2190 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2191 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2192 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2193 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+flooddeop {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2194 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2195 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2196 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2197 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+floodnick {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2198 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2199 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2200 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2201 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+floodchan {
+if {[matchattr $hand nmo|M $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.2202 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2203 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2204 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.2205 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+purge {
+if {[matchattr $hand nmo|M $chan]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 man.670 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.671 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.672 none
+	blacktools:tell $nick $host $hand $chan $chan1 man.showtip none
+	}
+}
+
+tip {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 man.6666 none
+	}
+}
+
+default {
+	blacktools:tell $nick $host $hand $chan $chan1 man.1_1 $nick
+		}
+	}
+}
+
+##############
+#########################################################################
+##   END                                                               ##
+#########################################################################

+ 2005 - 0
BlackTools2.5.2/Commands/BT.MeCmds.tcl

@@ -0,0 +1,2005 @@
+#########################################################################
+##          BlackTools - The Ultimate Channel Control Script           ##
+##                    One TCL. One smart Eggdrop                       ##
+#########################################################################
+###########################   ME CMDS TCL   #############################
+#########################################################################
+##						                       ##
+##   BlackTools  : http://blacktools.tclscripts.net	               ##
+##   Bugs report : http://www.tclscripts.net/	                       ##
+##   GitHub page : https://github.com/tclscripts/BlackToolS-TCL-script ##
+##   Online Help : irc://irc.undernet.org/tcl-help 	               ##
+##                 #TCL-HELP / UnderNet                                ##
+##                 You can ask in english or romanian                  ##
+##					                               ##
+#########################################################################
+
+proc comand:pubme {nick host hand chan arg} {
+global botnick wordsdir sdir black seendir count server uptime {server-online} version lastbind
+	set bnick [lindex [split $arg] 0]
+	set what [lindex [split $arg] 1]
+	set chan1 $chan
+if {[isbotnick $nick]} { return }
+if {[isbotnick $bnick]} {
+switch -exact -- [string tolower $what] {
+
+login {
+if {[matchattr $hand mn]} {
+	set chan1 $chan
+	login:process $nick $host $hand $chan $chan1
+	}
+}
+
+report {
+	set type "1"
+	set w [lindex [split $arg] 2]
+	set message [join [lrange [split $arg] 3 end]]
+	set chan1 $chan
+if {[regexp {^[&#]} $w]} {
+	set chan $w
+	set w [lindex [split $arg] 3]
+	set message [join [lrange [split $arg] 4 end]]
+}
+if {[matchattr $hand mno|MAO $chan]} {
+	return
+}
+	report:process $nick $host $host $hand $chan $chan1 $type $w $message
+}
+
+anunt {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 1
+	set chan1 "$chan"
+	set who [lindex [split $arg] 2]
+	set message [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {[regexp {^[&#]} $who] && [matchattr $hand nmo|M $who]} {
+	set chan $who
+	set who [lindex [split $arg] 3]
+	set message [join [lrange [split $arg] 4 end]]
+	set number [lindex [split $arg] 4]
+		}
+	anunt:process $nick $host $hand $chan $chan1 $who $message $number $type
+	}
+}
+
+link {
+if {[matchattr $hand nm]} {
+	set type 1
+	set channels [join [lrange [split $arg] 2 end]]
+	set what [lindex [split $arg] 2]
+	set delchan [lindex [split $arg] 3]
+	set chan1 $chan
+	link:process $nick $host $hand $chan $chan1 $type $what $channels $delchan
+	}
+}
+
+note {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	set who [lindex [split $arg] 2]
+	set note [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 3]
+	set user_send [lindex [split $arg] 3]
+	set note_send [join [lrange [split $arg] 4 end]]
+	set type 1
+	set chan1 $chan
+	note:process $nick $host $hand $chan $chan1 $who $note $user_send $note_send $number $type
+	}
+}
+
+q {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	set otherchan 0
+	set who [lindex [split $arg] 2]
+	set next [lindex [split $arg] 3]
+	set quote [join [lrange [split $arg] 2 end]]
+if {$who == "*"} {
+	set who [lindex [split $arg] 3]
+	set quote [join [lrange [split $arg] 2 end]]
+}
+if {[regexp {^[\[]} $who]} {
+	set who [lindex [split $arg] 3]
+	set quote [join [lrange [split $arg] 2 end]]
+if {$who == "*"} {
+	set who [lindex [split $arg] 4]
+	set quote [join [lrange [split $arg] 2 end]]
+	}
+}
+	set type 1
+	set chan1 $chan
+if {[regexp {^[&#]} $who] && [matchattr $hand nmo|AOMV $who]} {
+	set otherchan 1
+	set chan "$who"
+	set who [lindex [split $arg] 3]
+	set next [lindex [split $arg] 4]
+	set quote [join [lrange [split $arg] 3 end]]
+if {$who == "*"} {
+	set who [lindex [split $arg] 4]
+	set quote [join [lrange [split $arg] 3 end]]
+}
+if {[regexp {^[\[]} $who]} {
+	set who [lindex [split $arg] 4]
+	set quote [join [lrange [split $arg] 3 end]]
+if {$who == "*"} {
+	set who [lindex [split $arg] 5]
+	set quote [join [lrange [split $arg] 3 end]]
+		}
+	}
+}
+if {$otherchan == "1"} {
+	quote:process $nick "chan" $hand $chan $chan1 $type $who $quote [lrange [split $arg] 3 end] $next
+	} else {
+	quote:process $nick "chan" $hand $chan $chan1 $type $who $quote [lrange [split $arg] 2 end] $next
+		}
+	}
+}
+
+enable {
+if {[matchattr $hand nmo|M $chan]} {
+	set what [lindex [split $arg] 2]
+	set user [lindex [split $arg] 3]
+	set chan1 "$chan"
+	set type "1"
+if {[regexp {^[&#]} $what] && [matchattr $hand nmo|M $what]} {
+	set chan "$what"
+	set what [lindex [split $arg] 3]
+	set user [lindex [split $arg] 4]
+}
+	enable:process $nick $host $hand $chan $chan1 $type $what $user
+	}
+}
+
+disable {
+if {[matchattr $hand nmo|M $chan]} {
+	set what [lindex [split $arg] 2]
+	set user [lindex [split $arg] 3]
+	set chan1 "$chan"
+	set type "1"
+if {[regexp {^[&#]} $what] && [matchattr $hand nmo|M $what]} {
+	set chan "$what"
+	set what [lindex [split $arg] 3]
+	set user [lindex [split $arg] 4]
+}
+	disable:process $nick $host $hand $chan $chan1 $type $what $user
+	}
+}
+
+securemode {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 1
+	set chan1 "$chan"
+	set why [lindex [split $arg] 2]
+	set except [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 3]
+	set except [join [lrange [split $arg] 4 end]]
+	set number [lindex [split $arg] 4]
+}
+	prot:module:process $nick $host $hand $chan $chan1 $why $except $type $number "securemode"
+	}
+}
+
+cp {
+if {[matchattr $hand nm]} {
+	set type 1
+	set chan1 $chan
+	set what [lindex [split $arg] 2]
+	set from [lindex [split $arg] 3]
+	set to [lindex [split $arg] 4]
+	cp:process $nick $host $hand $chan $chan1 $type $what $from $to
+	}
+}
+
+troll {
+if {[matchattr $hand nmo|AOM $chan]} {
+	set tr [lindex [split $arg] 2]
+	set chan1 "$chan"
+	set type "1"
+if {[regexp {^[&#]} $tr] && [matchattr $hand nmo|MAO $tr]} {
+	set chan "$tr"
+	set tr [lindex [split $arg] 3]
+}
+	userhost:act $tr $nick $hand $host $chan $chan1 $type "1440" "troll" "" "0"
+	}
+}
+
+guestnick {
+if {[matchattr $hand nmo|M $chan]} {
+	set who [lindex [split $arg] 2]
+	set modul "guestnick"
+	set type 1
+	set chan1 $chan
+	set gnick [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {[regexp {^[&#]} $who] && [matchattr $hand nmo|M $who]} {
+	set who [lindex [split $arg] 3]
+	set gnick [join [lrange [split $arg] 4 end]]
+	set number [lindex [split $arg] 4]
+		}
+	guestnick:process $nick $host $hand $chan $chan1 $who $gnick $type $number $modul
+	}
+}
+
+badhost {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 1
+	set chan1 "$chan"
+	set why [lindex [split $arg] 2]
+	set badh [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 3]
+	set badh [join [lrange [split $arg] 4 end]]
+	set number [lindex [split $arg] 4]
+}
+	prot:module:process $nick $host $hand $chan $chan1 $why $badh $type $number "badhost"
+	}
+}
+
+badrealname {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 1
+	set chan1 "$chan"
+	set why [lindex [split $arg] 2]
+	set badf [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 3]
+	set badf [join [lrange [split $arg] 4 end]]
+	set number [lindex [split $arg] 4]
+}
+	prot:module:process $nick $host $hand $chan $chan1 $why $badf $type $number "badrealname"
+	}
+}
+
+badquitpart {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 1
+	set chan1 "$chan"
+	set why [lindex [split $arg] 2]
+	set badq [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 3]
+	set badq [join [lrange [split $arg] 4 end]]
+	set number [lindex [split $arg] 4]
+}
+	prot:module:process $nick $host $hand $chan $chan1 $why $badq $type $number "badquitpart"
+	}
+}
+
+
+badident {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 1
+	set chan1 "$chan"
+	set why [lindex [split $arg] 2]
+	set badi [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 3]
+	set badi [join [lrange [split $arg] 4 end]]
+	set number [lindex [split $arg] 4]
+}
+	prot:module:process $nick $host $hand $chan $chan1 $why $badi $type $number "badident"
+	}
+}
+
+
+badnick {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 1
+	set chan1 "$chan"
+	set why [lindex [split $arg] 2]
+	set badn [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 3]
+	set badn [join [lrange [split $arg] 4 end]]
+	set number [lindex [split $arg] 4]
+}
+	prot:module:process $nick $host $hand $chan $chan1 $why $badn $type $number "badnick"
+	}
+}
+
+
+badword {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 1
+	set chan1 "$chan"
+	set why [lindex [split $arg] 2]
+	set badw [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 3]
+	set badw [join [lrange [split $arg] 4 end]]
+	set number [lindex [split $arg] 4]
+}
+	prot:module:process $nick $host $hand $chan $chan1 $why $badw $type $number "badword"
+	}
+}
+
+
+unset {
+if {[matchattr $hand nmo|M $chan]} {
+	set setting [lindex [split $arg] 2]
+	set chan1 $chan
+	set type 1
+if {[regexp {^[&#]} $setting] && [matchattr $hand nmo|M $setting]} {
+	set chan $setting
+	set setting [lindex [split $arg] 3]
+	}
+if {[string equal -nocase $setting "global"] && [matchattr $hand nm]} {
+	set setting [lindex [split $arg] 3]
+foreach c [channels] {
+	unset:process $nick $host $hand $c $chan1 $setting $type
+			}
+		return
+	}
+	unset:process $nick $host $hand $chan $chan1 $setting $type
+	}
+}
+
+greet {
+if {[matchattr $hand nmo|M $chan]} {
+	set who [lindex [split $arg] 2]
+	set modul "greet"
+	set type 1
+	set chan1 $chan
+	set greet [join [lrange [split $arg] 3 end]]
+if {[regexp {^[&#]} $who] && [matchattr $hand nmo|M $who]} {
+	set chan $who
+	set who [lindex [split $arg] 3]
+	set greet [join [lrange [split $arg] 4 end]]
+	}
+	othermodule:process $nick $host $hand $chan $chan1 $who $greet $type $modul	
+	}
+}
+
+leave {
+if {[matchattr $hand nmo|M $chan]} {
+	set who [lindex [split $arg] 2]
+	set modul "leave"
+	set type 1
+	set chan1 $chan
+	set leave [join [lrange [split $arg] 3 end]]
+if {[regexp {^[&#]} $who] && [matchattr $hand nmo|M $who]} {
+	set chan $who
+	set who [lindex [split $arg] 3]
+	set leave [join [lrange [split $arg] 4 end]]
+	}
+	othermodule:process $nick $host $hand $chan $chan1 $who $leave $type $modul		
+	}
+}
+
+topic {
+if {[matchattr $hand nmo|M $chan]} {
+	set who [lindex [split $arg] 2]
+	set modul "topic"
+	set type 0
+	set chan1 $chan
+	set topic [join [lrange [split $arg] 3 end]]
+if {[regexp {^[&#]} $who] && [matchattr $hand nmo|M $who]} {
+	set chan $who
+	set who [lindex [split $arg] 3]
+	set topic [join [lrange [split $arg] 4 end]]
+}
+	othermodule:process $nick $host $hand $chan $chan1 $who $topic $type $modul	
+	}
+}
+
+vr {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set vr [lindex [split $arg] 2]
+	set chan1 "$chan"
+	set type "1"
+if {[regexp {^[&#]} $vr] && [matchattr $hand nmo|MAO $vr]} {
+	set chan "$vr"
+	set vr [lindex [split $arg] 3]
+}
+	userhost:act $vr $nick $hand $host $chan $chan1 $type $black(vr:bantime) "vr" "" "0"
+	}
+}
+
+dr {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set drone [lindex [split $arg] 2]
+	set type "1"
+	set chan1 "$chan"
+if {[regexp {^[&#]} $drone] && [matchattr $hand nmo|OMA $drone]} {
+	set chan "$drone"
+	set drone [lindex [split $arg] 3]
+}
+	userhost:act $drone $nick $hand $host $chan $chan1 $type $black(dr:bantime) "dr" "" "0"
+	}
+}
+
+bot {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set bot [lindex [split $arg] 2]
+	set type 1
+	set chan1 "$chan"
+if {[regexp {^[&#]} $bot] && [matchattr $hand nmo|OMA $bot]} {
+	set chan "$bot"
+	set bot [lindex [split $arg] 3]
+}
+	userhost:act $bot $nick "$hand:bot" $host $chan $chan1 $type $black(bot:bantime) "bot" "" "0"
+	}
+}
+
+n {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set badnick [lindex [split $arg] 2]
+	set type 1
+	set chan1 "$chan"
+if {[regexp {^[&#]} $badnick] && [matchattr $hand nmo|MAO $badnick]} {
+	set chan "$badnick"
+	set badnick [lindex [split $arg] 3]
+}
+if {[regexp {\*} $badnick]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "n"
+	return
+}
+if {$badnick == ""} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "n"
+	return
+}
+	bancmds:process $badnick $badnick $nick $hand $host $chan $chan1 $type $black(n:bantime) "n" "" "0"
+	}
+}
+
+id {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set badident [lindex [split $arg] 2]
+	set handle [nick2hand $badident]
+	set type 1
+	set chan1 "$chan"
+if {[regexp {^[&#]} $badident] && [matchattr $hand nmo|OMA $badident]} {
+	set chan "$badident"
+	set badident [lindex [split $arg] 3]
+}
+	userhost:act $badident $nick $hand $host $chan $chan1 $type $black(id:bantime) "id" "" "0"
+	}
+}
+
+spam {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set spammer [lindex [split $arg] 2]
+	set type 1
+	set chan1 "$chan"
+if {[regexp {^[&#]} $spammer] && [matchattr $hand nmo|OMA $spammer]} {
+	set chan "$spammer"
+	set spammer [lindex [split $arg] 3]
+}
+	userhost:act $spammer $nick $hand $host $chan $chan1 $type $black(spam:bantime) "spam" "" "0"
+	}
+}
+
+bw {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set badw [lindex [split $arg] 2]
+	set type 1
+	set chan1 "$chan"
+if {[regexp {^[&#]} $badw] && [matchattr $hand nmo|OMA $badw]} {
+	set chan "$badw"
+	set badw [lindex [split $arg] 3]
+}
+	userhost:act $badw $nick $hand $host $chan $chan1 $type $black(bw:bantime) "bw" "" "0"
+	}
+}
+
+mb {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set badd [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+	set type 1
+	set chan1 "$chan"
+if {[regexp {^[&#]} $badd] && [matchattr $hand nmo|OMA $badw]} {
+	set chan "$badd"
+	set badd [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 4 end]]
+}
+	userhost:act $badd $nick $hand $host $chan $chan1 $type $black(mb:bantime) "mb" $reason "0"
+	}
+}
+
+
+black {
+if {[matchattr $hand nmo|MA $chan]} {
+	set blackb [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+	set type 1
+	set chan1 "$chan"
+if {[regexp {^[&#]} $blackb] && [matchattr $hand nmo|MA $blackb]} {
+	set chan "$blackb"
+	set blackb [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 4 end]]
+}
+	userhost:act $blackb $nick $hand $host $chan $chan1 $type "0" "black" $reason "0"
+	}
+}
+
+bl {
+if {[matchattr $hand nmo|MA $chan]} {
+	set blackb [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+	set type 1
+	set chan1 "$chan"
+if {[regexp {^[&#]} $blackb] && [matchattr $hand nmo|MA $blackb]} {
+	set chan "$blackb"
+	set blackb [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 4 end]]
+}
+	userhost:act $blackb $nick $hand $host $chan $chan1 $type "0" "black" $reason "0"
+	}
+}
+
+b {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set no_time 0
+	set type 1
+	set gl 0
+	set link 0
+	set chan1 "$chan"
+	set level ""
+	set b [lindex [split $arg] 2]
+	set tm [lindex [split $arg] 3]
+	set global [lindex [split $arg] 4]
+	set reason [join [lrange [split $arg] 5 end]]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set global [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 4 end]]
+}
+if {[regexp {^[&#]} $b] && [matchattr $hand nmo|MAO $b]} {
+	set chan $b
+	set b [lindex [split $arg] 3]
+	set tm [lindex [split $arg] 4]
+	set global [lindex [split $arg] 5]
+	set reason [join [lrange [split $arg] 6 end]]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set global [lindex [split $arg] 4]
+	set reason [join [lrange [split $arg] 5 end]]
+}
+if {[regexp {^[-]} $tm]} {
+	set level [blacktools:check:levelban $hand $chan $tm]
+	set reason [join [lrange [split $arg] 6 end]]
+	set tm [lindex [split $arg] 5]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set tm [lindex [split $arg] 4]
+	set reason [join [lrange [split $arg] 5 end]]
+		} 
+} elseif {[string equal -nocase "$global" "global"] && [matchattr $hand nm]} {
+	set gl 1
+	set tm [lindex [split $arg] 4]
+	set reason [join [lrange [split $arg] 6 end]]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 5 end]]
+			} 
+	} else {
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 4 end]]
+	} else {
+	set reason [join [lrange [split $arg] 5 end]]
+		}
+	}
+} else {
+if {[regexp {^[-]} $tm]} {
+	set levelban 1
+	set level [blacktools:check:levelban $hand $chan $tm]
+	set reason [join [lrange [split $arg] 5 end]]
+	set tm [lindex [split $arg] 4]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set tm [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 4 end]]
+		} 
+} elseif {[string equal -nocase "$global" "global"] && [matchattr $hand nm]} {
+	set gl 1
+	set tm [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 5 end]]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 4 end]]
+			} 
+	} elseif {[string equal -nocase "$global" "link"] && [matchattr $hand nm]} {
+	set link 1
+	set tm [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 5 end]]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 4 end]]
+			} 
+	} else {
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 3 end]]
+	} else {
+	set reason [join [lrange [split $arg] 4 end]]
+		}
+	}
+}
+if {($return_time > "20160" || $return_time == "0")  && [matchattr $hand -|OS $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 b.6 none
+	return
+}
+if {$return_time == "-1"} {
+	set return_time $black(b:bantime)
+}
+if {[llength $level] > "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.invalidlevel [string map {"0" ""} $level]
+	return
+}
+	
+if {$level != ""} {
+	userhost:act $b $nick "$hand:$level" $host $chan $chan1 $type $return_time "b" $reason $gl
+} else {
+if {$link == "1"} {
+	foreach c [link:chan:get $chan] {
+	userhost:act $b $nick "$hand" $host $c $chan1 $type $return_time "b" $reason "2"
+	}
+	userhost:act $b $nick "$hand" $host $chan $chan1 $type $return_time "b" $reason "2"
+	return
+}
+	userhost:act $b $nick "$hand" $host $chan $chan1 $type $return_time "b" $reason $gl
+		}
+	}
+}
+
+
+stick {
+if {[matchattr $hand nmo|M $chan]} {
+	set stickb [lindex [split $arg] 2]
+	set tm [lindex [split $arg] 3]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 3 end]]
+} else {
+	set tm [lindex [split $arg] 4]
+	set reason [join [lrange [split $arg] 4 end]]
+}
+	set type 1
+	set chan1 "$chan"
+if {[regexp {^[&#]} $stickb] && [matchattr $hand nmo|MA $stickb]} {
+	set chan "$stickb"
+	set stickb [lindex [split $arg] 3]
+	set tm [lindex [split $arg] 4]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 4 end]]
+} else {
+	set tm [lindex [split $arg] 5]
+	set reason [join [lrange [split $arg] 5 end]] 
+	}
+}
+if {($return_time > "20160" || $return_time == "0")  && [matchattr $hand -|OS $stickb]} {
+	blacktools:tell $nick $host $hand $chan $chan1 b.6 none
+	return
+}
+
+if {$return_time == "-1"} {
+	set return_time $black(stick:bantime)
+}
+	userhost:act $stickb $nick $hand $host $chan $chan1 $type $return_time "stick" $reason "0"
+	}
+}
+
+ub {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set ban [lindex [split $arg] 2]
+	set why [lindex [split $arg] 3]
+	set type 1	
+	set chan1 "$chan"
+if {[regexp {^[&#]} $ban] && [matchattr $hand nmo|MAO $ban]} {
+	set chan "$ban"
+	set ban [lindex [split $arg] 3]
+	set why [lindex [split $arg] 4]
+}
+if {[regexp {^[0-9]} $ban]} {
+	set cmd "ub:id"
+} else {
+	set cmd "ub"
+}
+if {[string equal -nocase $why "global"] && [matchattr $hand nm]} {
+	ub:process $ban $ban $nick $hand $host $chan $chan1 $type "1" $cmd "" "" ""
+} elseif {[string equal -nocase $why "link"] && [matchattr $hand nm]} {
+	ub:process $ban $ban $nick $hand $host $chan $chan1 $type "" "ub" "" "1" ""
+} else {
+	ub:process $ban $ban $nick $hand $host $chan $chan1 $type "" $cmd "" "" ""
+		}
+	}
+}
+
+sb {
+if {[matchattr $hand nmo|VMAO $chan]} {
+	set bhost [lindex [split $arg] 2]
+	set what [lindex [split $arg] 3]
+	set type 1
+	set chan1 "$chan"
+if {[regexp {^[&#]} $bhost] && [matchattr $hand nmo|MAO $bhost]} {
+	set chan "$bhost"
+	set bhost [lindex [split $arg] 3]
+	set what [lindex [split $arg] 4]
+	}
+if {$bhost != ""} {
+if {[regexp {^[0-9]} $bhost]} {
+	sb:process $bhost $what $nick $hand $host $chan $chan1 $type "sb" "2"
+	return
+}
+if {![validchan $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+}
+if {[onchan $bhost $chan]} {
+	set bhost "$bhost![getchanhost $bhost $chan]"
+	sb:process $bhost $what $nick $hand $host $chan $chan1 $type "sb" "1"
+	return
+}
+
+if {[regexp {\*} $bhost]} {
+	sb:process $bhost $what $nick $hand $host $chan $chan1 $type "sb" "1"
+	return
+}
+	sb:process $bhost $what $nick $hand $host $chan $chan1 $type "sb" ""
+
+		} else { sb:process $bhost $what $nick $hand $host $chan $chan1 $type "sb" ""}
+	}
+}
+
+banlist {
+if {[matchattr $hand nmo|AOM $chan]} {
+	set user [lindex [split $arg] 2]
+	set next [lindex [split $arg] 3]
+	set type 1
+	set chan1 "$chan"
+if {[regexp {^[&#]} $user] && [matchattr $hand nmo|MASO $user]} {
+	set chan "$user"
+	set user [lindex [split $arg] 3]
+	set next [lindex [split $arg] 4]
+		}
+banlist:process $nick $host $hand $chan $chan1 $user $type "banlist" $next
+	}
+}
+
+r {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set c [lindex [split $arg] 2]
+	set chan1 $chan
+if {$c != "" && [matchattr $hand nmo|AMO $c]} {
+	topic:refresh $nick $host $hand $c $chan1 $arg
+	return
+		}
+	topic:refresh $nick $host $hand $chan $chan1 $arg
+	}
+}
+
+man {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	set command [lindex [split $arg] 2]
+	set type 1
+	set chan1 $chan
+	man:process $nick $host $hand $chan $chan1 $type $command
+	}
+}
+
+auto {
+if {[matchattr $hand nmo|MA $chan]} {
+	set type 1
+	set chan1 "$chan"
+	set option [lindex [split $arg] 2]
+	set user [lindex [split $arg] 3]
+	set global [lindex [split $arg] 4]
+if {[regexp {^[&#]} $option] && [matchattr $hand nmo|MA $option] && ![string equal -nocase $global "-global"]} {
+	set chan "$option"
+	set option [lindex [split $arg] 3]
+	set user [lindex [split $arg] 4]
+	set global [lindex [split $arg] 5]
+		}
+	auto:process $nick $host $hand $chan $chan1 $user $option $global $type 
+	}
+}
+
+
+antipub {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 1
+	set chan1 "$chan"
+	set why [lindex [split $arg] 2]
+	set except [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 3]
+	set except [join [lrange [split $arg] 4 end]]
+	set number [lindex [split $arg] 4]
+}
+	prot:module:process $nick $host $hand $chan $chan1 $why $except $type $number "antipub"
+	}
+}
+
+private {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 1
+	set chan1 "$chan"
+	set why [lindex [split $arg] 2]
+	set user [lindex [split $arg] 3]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $chan]} {
+	set chan "$why"
+	set why [lindex [split $arg] 3]
+	set user [lindex [split $arg] 4]
+		}
+private:process $nick $host $hand $chan $chan1 $why $user $type
+	}
+}
+
+tcl {
+if {[matchattr $hand n]} {
+	set type 1
+	set chan1 "$chan"
+	set the_script [lindex [split $arg] 3]
+	set who [lindex [split $arg] 2]
+	tcl:process $nick $host $hand $chan $chan1 $type $the_script $who
+	}
+}
+
+h {
+if {[matchattr $hand nmo|MSOAV $chan]} {
+	set chan1 "$chan"
+	set type 1
+	set command [lindex [split $arg] 2]
+	h:process $nick $host $hand $chan $chan1 $command $type
+	}
+}
+
+ignore {
+if {[matchattr $hand nmo|M $chan]} {
+	set chan1 "$chan"
+	set type 1
+	set what [lindex [split $arg] 2]
+	set mask [lindex [split $arg] 3]
+	set time [lindex [split $arg] 4]	
+	set reason [join [lrange [split $arg] 5 end]]
+if {![regexp {^[0-9]} $time]} {
+	set reason [join [lrange [split $arg] 4 end]]
+		}
+	ignore:process $nick $host $hand $chan $chan1 $what $mask $time $reason $type
+	}
+}
+
+
+idle {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 1
+	set chan1 "$chan"
+	set why [lindex [split $arg] 2]
+	set user [lindex [split $arg] 3]
+	set host [lindex [split $arg] 4]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 3]
+	set user [lindex [split $arg] 4]
+	set host [lindex [split $arg] 5]
+		}
+	antidle:process $why $type $user $host $nick $hand $chan $chan1
+	}
+}
+
+version {
+if {[matchattr $hand nmo|MASOV $chan]} {
+	set chan1 "$chan"
+	set text [lindex [split $arg] 2]
+version:process $nick $host $hand $chan $chan1 $text
+	}
+}
+
+stats {
+if {[matchattr $hand nmo|MA $chan]} {
+	set type 1
+	set chan1 "$chan"
+	set user [lindex [split $arg] 2]
+	set option [lindex [split $arg] 3]
+if {[regexp {^[&#]} $user] && [matchattr $hand nmo|MAOV $user]} {
+	set chan "$user"
+	set user [lindex [split $arg] 3]
+	set option [lindex [split $arg] 4]
+}
+	stats:process $nick $host $hand $chan $chan1 $user $option $type
+	}
+}
+
+chat {
+if {[matchattr $hand nm]} {
+	set cmd_status [btcmd:status $chan $hand "chat" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chan1 $chan
+	*ctcp:CHAT $nick $host $hand $botnick CHAT $arg
+	blacktools:tell $nick $host $hand $chan $chan1 chat.1 none
+	} 
+}
+
+seen {
+	set type 1
+	set wseen [lindex [split $arg] 2]
+	set chan1 "$chan"
+if {[regexp {^[&#]} $wseen]} {
+	set chan1 "$chan"
+	set chan "$wseen"
+	set wseen [lindex [split $arg] 3]
+	}
+	seen:process $nick $host $hand $chan $chan1 $wseen $type
+}
+
+limit {
+if {[matchattr $hand nmo|M $chan]} {
+	set why [lindex [split $arg] 2]
+	set lm [lindex [split $arg] 3]
+	set type 1
+	set chan1 "$chan"
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 3]
+	set lm [lindex [split $arg] 4]
+		}
+	limit:process $nick $host $hand $chan $chan1 $why $lm $type
+	}
+}
+
+bt {
+if {[matchattr $hand nm]} {
+	set chan1 "$chan"
+	set type 0
+	set who [lindex [split $arg] 2]
+	set message [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+	broadcast:process $nick $host $hand $chan $chan1 $who $message $number $type
+	}
+}
+
+badchan {
+if {[matchattr $hand nmo|M $chan]} {
+	set why [lindex [split $arg] 2]
+	set type1 1
+	set chan1 "$chan"
+	set bdchan [lindex [split $arg] 3]
+	set type [lindex [split $arg] 4]
+	set reason [join [lrange [split $arg] 4 end]]
+if {[string equal -nocase $type "global"]} {
+	set reason [join [lrange [split $arg] 5 end]]
+}
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 3]
+	set bdchan [lindex [split $arg] 4]
+	set type [lindex [split $arg] 5]
+	set reason [join [lrange [split $arg] 5 end]]
+if {[string equal -nocase $type "global"]} {
+	set reason [join [lrange [split $arg] 6 end]]
+	}
+}
+	badchan:process $nick $host $hand $chan $chan1 $why $bdchan $type1 $type $reason
+	}
+}
+
+us {
+if {[matchattr $hand nmo|MA $chan]} {
+	set type 1
+	set chan1 "$chan"
+	set users [lindex [split $arg] 2]
+if {[regexp {^[&#]} $users] && [matchattr $hand nmo|MA $users]} {
+	set chan "$users"
+	set users [lindex [split $arg] 3]
+		}
+	us:process $nick $host $hand $chan $chan1 $users $type
+	}
+} 
+
+s {
+if {[matchattr $hand nmo|MA $chan]} {
+	set type 1
+	set chan1 "$chan"
+	set user [lindex [split $arg] 2]
+	set suspend_time [lindex [split $arg] 3]
+	set suspend_reason [join [lrange [split $arg] 4 end]]
+if {![regexp {^[0-9]} $suspend_time]} {
+	set suspend_reason [join [lrange [split $arg] 3 end]]
+}
+if {[regexp {^[&#]} $user] && [matchattr $hand nmo|MA $user]} {
+	set chan "$user"
+	set user [lindex [split $arg] 3]
+	set suspend_time [lindex [split $arg] 4]
+	set suspend_reason [join [lrange [split $arg] 5 end]]
+if {![regexp {^[0-9]} $suspend_time]} {
+	set suspend_reason [join [lrange [split $arg] 4 end]]
+}
+		}
+	s:process $nick $host $hand $chan $chan1 $user $type $suspend_time $suspend_reason
+	}
+}
+
+info {
+if {[matchattr $hand nmo|MASOV $chan]} {
+	set user [lindex [split $arg] 2]
+	set type 1
+	set chan1 "$chan"
+if {[regexp {^[&#]} $user] && [matchattr $hand nmo|MASO $user] && ([lindex [split $arg] 3] == "")} {
+	set chan $user
+	info:process:chan $nick $host $hand $chan $chan1
+	return
+}
+
+if {[regexp {^[&#]} $user] && [matchattr $hand nmo|MASOV $chan]} {
+	set chan "$user"
+	set user [lindex [split $arg] 3]
+}
+	info:process $nick $host $hand $chan $chan1 $user $type
+	}
+}
+
+channels {
+if {[matchattr $hand nmo]} {
+	set chan1 "$chan"
+	channels:process $nick $host $hand $chan $chan1
+	}
+}
+
+
+userlist {
+if {[matchattr $hand nmo|MASOV $chan]} {
+	set level [lindex [split $arg] 2]
+	set type 1
+	set chan1 "$chan"
+if {[regexp {^[&#]} $level] && [matchattr $hand nmo|MASOV $level]} {
+	set chan "$level"
+	set level [lindex [split $arg] 3]
+if {![validchan $chan]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+	}
+} 
+	userlist:execute $hand $host $level $chan $chan1 $nick $type
+	}
+}
+
+chuser {
+if {[matchattr $hand nmo|M $chan]} {
+	set user [lindex [split $arg] 2]
+	set type 1	
+	set chan1 "$chan"
+	set chandle [lindex [split $arg] 3]
+	chuser:process $nick $host $hand $chan $chan1 $user $chandle $type
+	}
+}
+
+
+delhost {
+if {[matchattr $hand nmo|MA $chan]} {
+	set user [lindex [split $arg] 2]
+	set type 1
+	set chan1 "$chan"
+	set hosts [join [lrange [split $arg] 3 end]]
+	delhost:process $nick $host $hand $chan $chan1 $user $hosts $type
+	}
+}
+
+addhost {
+if {[matchattr $hand nmo|MA $chan]} {
+	set type 1
+	set chan1 "$chan"
+	set user [lindex [split $arg] 2]
+	set hosts [join [lrange [split $arg] 3 end]]
+	addhost:process $nick $host $hand $chan $chan1 $user $hosts $type
+	}
+}
+
+del {
+if {[matchattr $hand nmo|M $chan]} {
+	set args [lrange [split $arg] 2 end]
+	set type 1
+	set chan1 "$chan"
+	del:process $nick $host $hand $chan $chan1 $args $type
+	}
+}
+
+
+delacc {
+if {[matchattr $hand nmo|MA $chan]} {
+	set args [lrange [split $arg] 2 end]
+	set type 1
+	set chan1 "$chan"
+	set c [lindex [split $arg] 2]
+if {[regexp {^[&#]} $c] && [matchattr $hand nmo|AM $c]} {
+	set chan "$c"
+	set args [lrange [split $arg] 3 end]
+}
+foreach user $args {
+	delacc:process $nick $host $hand $chan $chan1 $user $type
+		}
+	}
+}
+
+add {
+if {[matchattr $hand nmo|MA $chan]} {
+	set level [lindex [split $arg] 2]
+	set type 1
+	set chan1 "$chan"
+	set args [lrange [split $arg] 3 end]
+	set handle ""
+	set uhost ""
+if {[regexp {^[&#]} $level] && [matchattr $hand nmo|MA $level]} {
+	set chan "$level"
+	set level [lindex [split $arg] 3]
+	set args [lrange [split $arg] 4 end]
+}
+if {$args != ""} {
+if {[string equal -nocase $level [blacktools:getlevelname 9 $hand]]} {
+	set user [lindex $args 0]
+	set reason [join [lrange $args 1 end]]
+if {$user != ""} {
+if {[validchan $chan] && [onchan $user $chan]} {
+	set handle [nick2hand $user]
+	set hosts [getchanhost $user $chan]
+	set uhost [return_mask $black(hostdefaultadd) $hosts $user]
+	add:process $user $uhost $handle $level $hand $host $chan $chan1 $nick $type "add" $reason "ban"
+} else {
+if {![string is alnum $user]} {
+	blacktools:tell $nick $host $hand $chan $chan1 add.18 none
+	continue
+}
+	add:process $user $uhost $handle $level $hand $host $chan $chan1 $nick $type "add" $reason "ban"
+		}
+	}
+	return
+}
+foreach user $args {
+if {$user != ""} {
+if {[validchan $chan] && [onchan $user $chan]} {
+	set handle [nick2hand $user]
+	set hosts [getchanhost $user $chan]
+	set uhost [return_mask $black(hostdefaultadd) $hosts $user]
+	add:process $user $uhost $handle $level $hand $host $chan $chan1 $nick $type "add" "" ""
+	continue
+} else {
+if {![string is alnum $user]} {
+	blacktools:tell $nick $host $hand $chan $chan1 add.18 none
+	continue
+}
+	add:process $user $uhost $handle $level $hand $host $chan $chan1 $nick $type "add" "" ""
+					}
+				}
+			}
+		} else {  add:process "" $uhost $handle $level $hand $host $chan $chan1 $nick $type "add" "" ""}	
+	}
+}
+
+unsuspend {
+if {[matchattr $hand nmo]} {
+	set cmd_status [btcmd:status $chan $hand "unsuspend" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chans [lindex [split $arg] 2]
+	set chan1 "$chan"
+if {$chans == ""} {blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "unsuspend"
+	return
+}
+
+if {![regexp {^[&#]} $chans]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+}
+ 
+if {![validchan $chans]} { blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+}
+
+if {![channel get $chans inactive]} {
+	blacktools:tell $nick $host $hand $chan $chan1 unsuspend.3 $chans
+	return
+}
+	channel set $chans -inactive
+	blacktools:tell $nick $host $hand $chan $chan1 unsuspend.4 $chans
+	}
+}
+
+suspend {
+if {[matchattr $hand nmo]} {
+	set cmd_status [btcmd:status $chan $hand "suspend" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chans [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+	set chan1 "$chan"
+if {$chans == ""} {blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "suspend"
+	return
+}
+if {![regexp {^[&#]} $chans]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+}
+if {![validchan $chans]} { blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+}
+
+if {[channel get $chans inactive]} {
+	blacktools:tell $nick $host $hand $chan $chan1 suspend.3 $chans 
+	return
+}
+	channel set $chans +inactive
+if {$reason == ""} { set reason "N/A" }
+	suspendchan:note $hand $chans $reason	
+	blacktools:tell $nick $host $hand $chan $chan1 suspend.4 $chans 
+	}
+}
+
+delchan {
+if {[matchattr $hand nmo]} {
+	set cmd_status [btcmd:status $chan $hand "delchan" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chans [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+	set chan1 "$chan"
+if {$chans == ""} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "delchan"
+	return
+}
+if {![regexp {^[&#]} $chans]} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none 
+	return
+} 
+
+if {![validchan $chans]} { blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+}
+
+	set getlang [string tolower [getuser $hand XTRA OUTPUT_LANG]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+
+if {!($black(homechan) == "") && ![string equal -nocase $black(homechan) "#no_home_chan"]} {
+if {[string equal -nocase $chans $black(homechan)]} {
+	blacktools:tell $nick $host $hand $chan $chan1 delchan.5 $chans
+	return
+	}
+}
+	channel remove $chans
+	delchan:all $chans
+if {$reason == ""} { set reason "N/A" }
+	delchan:note $hand $chans $reason
+	blacktools:tell $nick $host $hand $chan $chan1 delchan.3 $chans
+	}
+}
+
+addchan {
+if {[matchattr $hand nmo]} {
+	set cmd_status [btcmd:status $chan $hand "addchan" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chans [lindex [split $arg] 2]
+	set key [lindex [split $arg] 3]
+	set chan1 $chan
+if {$chans == ""} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "addchan"
+	return
+}
+if {![regexp {^[&#]} $chans]} {	
+	blacktools:tell $nick $host $hand $chan $chan1 gl.novalidchan none
+	return
+} 
+
+if {[validchan $chans]} {
+	blacktools:tell $nick $host $hand $chan $chan1 addchan.2 $chans
+	return
+} else {
+	channel add $chans
+	blacktools:tell $nick $host $hand $chan $chan1 addchan.3 $chans
+if {$key != ""} {
+	putquick "JOIN $chans :$key"
+	channel set $chans chanmode "+ntk $key"
+			}		
+		}
+	}
+}
+
+die {
+if {[matchattr $hand nm]} {
+	set cmd_status [btcmd:status $chan $hand "die" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+
+	set chan1 "$chan"
+	set reason [join [lrange [split $arg] 2 end]]
+	set getlang [string tolower [getuser $hand XTRA OUTPUT_LANG]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+	blacktools:tell $nick $host $hand $chan $chan1 die.1 none
+if {$reason == ""} {
+	set text [black:color:set "" $black(say.$getlang.die.2)]
+	set reply [join $text]
+	set reason $reply
+}
+	utimer 3 [list die $reason]
+	}
+}
+
+jump {
+if {[matchattr $hand nm]} {
+	set cmd_status [btcmd:status $chan $hand "jump" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chan1 "$chan"
+	set serv [lindex [split $arg] 2]
+if {$serv == ""} {
+	blacktools:tell $nick $host $hand $chan $chan1 jump.1 "..."
+	utimer 3 [list jump]
+} else {
+	blacktools:tell $nick $host $hand $chan $chan1 jump.1 "\002$serv\002"
+	utimer 3 [list jump $serv]
+		}	
+	}
+}
+
+save {
+if {[matchattr $hand nm]} {
+	set cmd_status [btcmd:status $chan $hand "save" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chan1 "$chan"
+	blacktools:tell $nick $host $hand $chan $chan1 save.1 none
+	save
+	}
+}
+
+restart {
+if {[matchattr $hand nm]} {
+	set cmd_status [btcmd:status $chan $hand "restart" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chan1 "$chan"
+	blacktools:tell $nick $host $hand $chan $chan1 restart.1 none
+	utimer 3 [list restart]
+	}
+}
+
+rehash {
+if {[matchattr $hand nm]} {
+	set cmd_status [btcmd:status $chan $hand "rehash" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chan1 "$chan"
+	blacktools:tell $nick $host $hand $chan $chan1 rehash.1 none
+	rehash
+	}
+}
+
+nick {
+if {[matchattr $hand nm]} {
+	set thenick [lindex [split $arg] 2]
+	set chan1 $chan
+	set type 1
+	tempnick:process $thenick $nick $host $hand $chan $chan1 $type
+	}
+}
+
+msg {
+if {[matchattr $hand nmo|- $chan]} {
+	set who [lindex [split $arg] 2]	
+	set chan1 "$chan"
+	set type 1
+	set msg [join [lrange [split $arg] 3 end]]
+	msg:process $nick $host $hand $chan $chan1 $who $msg $type
+	}
+}
+
+omsg {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set who [lindex [split $arg] 2]	
+	set chan1 "$chan"
+	set type 1
+	set msg [join [lrange [split $arg] 3 end]]
+if {![regexp {^[&#]} $who] && ![string equal -nocase $who "all"]} {
+	set msg [join [lrange [split $arg] 2 end]]
+	set who $chan
+}
+	omsg:process $nick $host $hand $chan $chan1 $who $msg $type
+	}
+}
+
+
+set {
+if {[matchattr $hand nmo|M $chan]} {
+	set flags [lindex [split $arg] 2]
+	set type [join [lrange [split $arg] 3 end]]
+	set type1 1
+	set chan1 "$chan"
+if {[regexp {^[&#]} $flags] && [matchattr $hand nmo|M $flags]} {
+	set chan "$flags"
+	set flags [lindex [split $arg] 3]
+	set type [join [lrange [split $arg] 4 end]]
+}
+if {[matchattr $hand mn]} {
+if {[string equal -nocase "global" $flags]} {
+	set chan "$flags"
+	set flags [lindex [split $arg] 3]
+	set type [join [lrange [split $arg] 4 end]]
+	foreach c [channels] {
+	set:process $nick $host $hand $c $chan1 $flags $type $type1	
+		}
+		return
+	}
+}
+	set:process $nick $host $hand $chan $chan1 $flags $type $type1
+	}
+}
+
+mode {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set modes [lindex [split $arg] 2]
+	set hosts [lindex [split $arg] 3]	
+	set type 1
+	set chan1 "$chan"
+if {[regexp {^[&#]} $modes] && [matchattr $hand nmo|OMA $modes]} {
+	set chan "$modes"
+	set modes [lindex [split $arg] 3]
+	set hosts [lindex [split $arg] 4]
+		}
+	mode:process $nick $host $hand $chan $chan1 $modes $type $hosts
+	}
+}
+
+cycle {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set reason [join [lrange [split $arg] 2 end]]	
+	set c [lindex [split $arg] 2]
+	set chan1 "$chan"
+if {[regexp {^[&#]} $c] && [matchattr $hand nmo|OMA $c]} {
+	set chan "$c"
+	set reason [join [lrange [split $arg] 3 end]]
+}
+	cycle:process $nick $host $hand $chan $chan1 $reason
+	}
+}
+
+purge {
+if {[matchattr $hand -|M $chan]} {
+	set c [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 2 end]]
+	set chan1 "$chan"
+if {[regexp {^[&#]} $c] && [matchattr $hand -|M $c]} {
+	set chan "$c"
+	set reason [join [lrange [split $arg] 3 end]]
+}
+if {$reason == ""} {
+	blacktools:tell $nick $host $hand $chan $chan1 purge.1 none
+	return
+}
+	purge:process $nick $host $hand $chan $chan1 $reason
+	}
+}
+
+broadcast {
+if {[matchattr $hand nm]} {
+	set text [join [lrange [split $arg] 2 end]]	
+	set chan1 "$chan"
+	set type 1
+	broadcast:cmd:process $nick $host $hand $chan $chan1 $text $type
+	}
+}
+
+act {
+if {[matchattr $hand nmo|MA $chan]} {
+	set text [join [lrange [split $arg] 2 end]]
+	set c [lindex [split $arg] 2]
+	set type 1
+	set chan1 "$chan"
+if {[regexp {^[&#]} $c] && [matchattr $hand nmo|AM $c]} {
+	set chan "$c"
+	set text [join [lrange [split $arg] 3 end]]
+}
+	act:process $nick $host $hand $chan $chan1 $text $type
+	}
+}
+
+say {
+if {[matchattr $hand nmo|MA $chan]} {
+	set text [join [lrange [split $arg] 2 end]]
+	set c [lindex [split $arg] 2]
+	set type 1
+	set chan1 "$chan"
+if {[regexp {^[&#]} $c] && [matchattr $hand nmo|MA $c]} {
+	set chan "$c"
+	set text [join [lrange [split $arg] 3 end]]
+}
+	say:process $nick $host $hand $chan $chan1 $text $type
+	}
+}
+
+v {
+if {[matchattr $hand nmo|VOMA $chan]} {
+	set voicex [join [lrange [split $arg] 2 end]]
+	set c [lindex [split $arg] 2]
+	set chan1 "$chan"
+if {[regexp {^[&#]} $c] && [matchattr $hand nmo|VOMA $c]} {
+	set chan "$c"
+	set voicex [join [lrange [split $arg] 3 end]]
+}
+	v:process $nick $host $hand $chan $chan1 $voicex
+	}
+}
+
+ho {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set hopex [join [lrange [split $arg] 2 end]]
+	set c [lindex [split $arg] 2]
+	set chan1 "$chan"
+if {[regexp {^[&#]} $c] && [matchattr $hand nmo|OMA $c]} {
+	set chan "$c"
+	set hopex [join [lrange [split $arg] 3 end]]
+		}
+	ho:process $nick $host $hand $chan $chan1 $hopex
+	}
+}
+
+o {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set opex [join [lrange [split $arg] 2 end]]
+	set c [lindex [split $arg] 2]
+	set chan1 "$chan"
+if {[regexp {^[&#]} $c] && [matchattr $hand nmo|OMA $c]} {
+	set chan "$c"
+	set opex [join [lrange [split $arg] 3 end]]
+		}
+	o:process $nick $host $hand $chan $chan1 $opex
+	}
+}
+
+uptime {
+if {[matchattr $hand nmo]} {
+	set cmd_status [btcmd:status $chan $hand "uptime" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+	set getlang [string tolower [getuser $hand XTRA OUTPUT_LANG]]
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+	set chan1 "$chan"
+	set up [return_time_2 $getlang [expr [unixtime] - $uptime]]
+	set on [return_time_2 $getlang [expr [unixtime] - ${server-online}]]
+	catch {exec uptime} shelluptime
+	set file [open $black(uptime_file) "r"]
+	set data [read -nonewline $file]
+	close $file
+if {$data == ""} {
+	set read_maxup "-"
+	set read_maxon "-"
+} else {
+	set read_maxup [return_time_2 $getlang [lindex [split $data] 0]]
+	set read_maxon [return_time_2 $getlang [lindex [split $data] 1]]
+}
+	blacktools:tell $nick $host $hand $chan $chan1 maxup.1 "$up $read_maxup"
+	blacktools:tell $nick $host $hand $chan $chan1 maxon.1 "$on $read_maxon"
+	blacktools:tell $nick $host $hand $chan $chan1 uptime.2 $shelluptime
+	blacktools:tell $nick $host $hand $chan $chan1 uptime.3 $server
+	}
+}
+
+status {
+if {[matchattr $hand nmo|- $chan]} {
+	status:process $nick $host $hand $chan
+	}
+}
+
+t {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set topics [join [lrange [split $arg] 2 end]]
+	set c [lindex [split $arg] 2]
+	set type 1
+	set chan1 "$chan"
+if {[regexp {^[&#]} $c] && [matchattr $hand nmo|OMA $c]} {
+	set chan "$c"	
+	set topics [join [lrange [split $arg] 3 end]]
+		}
+	t:process $nick $host $hand $chan $chan1 $topics $type
+	}
+}
+
+k {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set knick [lindex [split $arg] 2]
+	set type 1
+	set reason [join [lrange [split $arg] 3 end]]
+	set handle [nick2hand $knick]
+	set chan1 "$chan"
+if {[regexp {^[&#]} $knick] && [matchattr $hand nmo|MAO $knick]} {
+	set chan "$knick"
+	set knick [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 4 end]]
+}
+if {$knick != ""} {
+	k:process $knick $nick $hand $host $reason $chan $chan1 $type
+		} else {k:process $knick $nick $hand $host $reason $chan $chan1 $type}
+	}
+}
+
+w {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set wnick [lindex [split $arg] 2]
+	set type 1
+	set handle [nick2hand $wnick]
+	set chan1 "$chan"
+if {[regexp {^[&#]} $wnick] && [matchattr $hand nmo|MAO $wnick]} {
+	set chan "$wnick"
+	set wnick [lindex [split $arg] 3]
+}
+if {$wnick != ""} {
+	w:process $wnick $nick $hand $host $chan $chan1 $type
+		} else { w:process $wnick $nick $hand $host $chan $chan1 $type }
+	}
+}
+
+ungag {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set gagger [lindex [split $arg] 2]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $gagger] && [matchattr $hand nmo|MAO $gagger]} {
+	set chan "$gagger"
+	set gagger [lindex [split $arg] 3]
+}
+if {$gagger != ""} {
+	ungag:process $gagger $nick $hand $host $chan $chan1 $type
+	} else { ungag:process $gagger $nick $hand $host $chan $chan1 $type }
+	}
+}
+
+gag {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set gagger [lindex [split $arg] 2]
+	set time [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 4 end]]
+	set type 1
+	set handle [nick2hand $gagger]
+	set chan1 "$chan"
+	set return_time [time_return_minute $time]
+if {$return_time == "-1"} {
+	set reason [lrange [split $arg] 3 end]
+	set time [setting:get $chan gag-bantime]
+if {$time == ""} {
+	set time $black(gag:bantime)
+	}
+}
+if {[regexp {^[&#]} $gagger] && [matchattr $hand nmo|MAO $gagger]} {
+	set chan "$gagger"
+	set gagger [lindex [split $arg] 3]
+	set time [lindex [split $arg] 4]
+	set reason [join [lrange [split $arg] 5 end]]
+	set return_time [time_return_minute $time]
+if {$return_time == "-1"} {
+	set reason [lrange [split $arg] 4 end]
+	set time [setting:get $chan gag-bantime]
+if {$time == ""} {
+	set time $black(gag:bantime)
+		}
+	}
+}
+if {$gagger != ""} {
+	gag:process $gagger $time $reason $nick "$hand:GAG" $host $chan $chan1 $type
+	} else { gag:process $gagger $time $reason $nick $hand $host $chan $chan1 $type }
+	}
+}
+
+show {
+if {[matchattr $hand nmo|M $chan]} {
+	set wich [lindex [split $arg] 2]
+	set type 1
+	set chan1 "$chan"
+if {[regexp {^[&#]} $wich] && [matchattr $hand nmo|M $wich]} {
+	set chan "$wich"
+	set wich [lindex [split $arg] 3]	
+		}
+	show:process $nick $host $hand $chan $chan1 $wich $type
+	}
+}
+
+clonescan {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set why [lindex [split $arg] 2]
+	set type 1
+if {[matchattr $hand nmo|M $chan] && ($why != "") && ![regexp {^[&#]} $why]} {
+	set chan1 "$chan"
+	set clone [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {[regexp {^[&#]} $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 3]
+	set clone [join [lrange [split $arg] 4 end]]
+	set number [lindex [split $arg] 4]
+}
+	prot:module:process $nick $host $hand $chan $chan1 $why $clone $type $number "clonescan"
+	return
+}
+	set c [lindex [split $arg] 2]
+	set type 0
+	set chan1 "$chan"
+if {[regexp {^[&#]} $c] && [matchattr $hand nmo|M $c]} {
+	set chan "$c"
+}
+	scanner:process $nick $host $hand $chan $chan1 $type
+	}
+}
+
+topwords {
+if {[matchattr $hand nmo|AOMV $chan]} {
+	set chan1 "$chan"
+	set cmd ""
+	set type 1
+	set next [lindex [split $arg] 2]
+if {[regexp {^[&#]} $next] && [matchattr $hand nmo|MAOV $next]} {
+	set chan $next
+	set next [lindex [split $arg] 3]
+	switch $next {
+reset {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 4]
+	set cmd "reset"
+		}	
+	}
+total {
+	set next [lindex [split $arg] 4]
+	set cmd "total"
+	}
+week {
+	set next [lindex [split $arg] 4]
+	set cmd "week"
+	}
+add {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 4]
+	set cmd "add"
+	}
+}	
+del {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 4]
+	set cmd "del"
+		}	
+	}
+list {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 4]
+	set cmd "list"
+	}	
+}
+default {
+if {[matchattr $hand nmo|MAOV $next]} {
+if {$next != "" && ![string equal -nocase $next "-next"]} {
+	set cmd $next
+	set next [lindex [split $arg] 4]
+	switch $next {
+	total {
+	set cmd "total:$cmd"
+	}
+	week {
+	set cmd "week:$cmd"
+	}
+	reset {
+	set cmd "reset:$cmd"
+					}
+	default {
+	set cmd "user:$cmd"
+						}
+					}
+				}
+			}
+		}
+	}
+}
+if {$cmd == ""} {
+	switch $next {
+reset {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 3]
+	set cmd "reset"
+		}	
+	}
+total {
+	set next [lindex [split $arg] 3]
+	set cmd "total"
+	}
+week {
+	set next [lindex [split $arg] 3]
+	set cmd "week"
+	}
+add {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 3]
+	set cmd "add"
+	}
+}	
+del {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 3]
+	set cmd "del"
+		}	
+	}
+list {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 3]
+	set cmd "list"
+	}	
+}
+default {
+if {$next != "" && ![string equal -nocase $next "-next"]} {
+if {[matchattr $hand nmo|MAOV $next]} {
+	set cmd $next
+	set next [lindex [split $arg] 3]
+	switch $next {
+	total {
+	set cmd "total:$cmd"
+	}
+	week {
+	set cmd "week:$cmd"
+	}
+	reset {
+	set cmd "reset:$cmd"
+					}
+	default {
+	set cmd "user:$cmd"
+						}
+					}
+				}
+			}
+		}
+	}
+}
+	topwords:process $nick $host $hand $chan $chan1 $cmd $type $next
+	}	
+}
+
+myset {
+if {[matchattr $hand nmo|VAOM $chan]} {
+	set type 1
+	set chan1 "$chan"	
+	set flags [lindex [split $arg] 2]
+	set typez [lindex [split $arg] 3]
+	set chan2 [lindex [split $arg] 4]
+	set arg [join [lrange [split $arg] 3 end]]
+	myset:process $nick $host $hand $chan $chan1 $flags $typez $type $chan2 $arg
+	}
+}
+
+timer {
+if {[matchattr $hand nm]} {
+	set chan1 $chan
+	set cmd [lindex [split $arg] 2]
+	set pid [lindex [split $arg] 3]
+	set timer_args [join [lrange [split $arg] 4 end]]
+	set type 1
+	timer:process $nick $host $hand $chan $chan1 $cmd $pid $timer_args $type
+	}
+}
+
+i {
+if {[matchattr $hand nmo|VAOM $chan]} {
+	set type 1
+	set chan1 "$chan"
+	set inick [lindex [split $arg] 2]
+if {[regexp {^[&#]} $inick] && [matchattr $hand nmo|VAOM $inick]} {
+	set chan "$inick"
+	set inick [lindex [split $arg] 3]
+}
+	i:process $nick $host $hand $chan $chan1 $inick $type
+	}
+}
+
+badword {
+if {[matchattr $hand nmo|M $chan]} {
+	set why [lindex [split $arg] 2]
+	set type 1
+	set chan1 "$chan"
+	set bdword [join [lrange [split $arg] 3 end]]
+	set bdnumber [lindex [split $arg] 3]
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 3]
+	set bdnumber [lindex [split $arg] 4]
+	set bdword [join [lrange [split $arg] 4 end]]
+		}
+	antibadword:command:process $nick $host $hand $chan $chan1 $why $bdword $bdnumber $type
+	}
+}
+next {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set option [lindex [split $arg] 2]
+	set chan1 $chan
+		nextpublic:process $nick $host $hand $chan $chan1 $option
+	}
+}
+
+helped {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set user [lindex [split $arg] 2]
+	set chan1 $chan
+	set type 1
+	helpedpublic:process $nick $host $hand $chan $chan1 $user $type
+	}
+}
+
+noidle {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set user [lindex [split $arg] 2]
+	set chan1 $chan
+	set type 1
+	noidlepublic:process $nick $host $hand $chan $chan1 $user $type
+	}
+}
+
+skip {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set user [lindex [split $arg] 2]
+	set chan1 $chan
+	set type 1
+	skippublic:process $nick $host $hand $chan $chan1 $user	$type
+				}
+			}		
+		}
+	}
+}
+
+##############
+#########################################################################
+##   END                                                               ##
+#########################################################################

+ 500 - 0
BlackTools2.5.2/Commands/BT.OwnerCmds.tcl

@@ -0,0 +1,500 @@
+#########################################################################
+##          BlackTools - The Ultimate Channel Control Script           ##
+##                    One TCL. One smart Eggdrop                       ##
+#########################################################################
+#########################   OWNER CMDS TCL   ############################
+#########################################################################
+##						                       ##
+##   BlackTools  : http://blacktools.tclscripts.net	               ##
+##   Bugs report : http://www.tclscripts.net/	                       ##
+##   GitHub page : https://github.com/tclscripts/BlackToolS-TCL-script ##
+##   Online Help : irc://irc.undernet.org/tcl-help 	               ##
+##                 #TCL-HELP / UnderNet                                ##
+##                 You can ask in english or romanian                  ##
+##					                               ##
+#########################################################################
+
+
+################################ Commands ###################################
+
+################################## login ####################################
+
+proc login:process {nick host hand chan chan1} {
+	global black
+	set cmd_status [btcmd:status $chan $hand "login" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[info exists black(logged)]} {
+	blacktools:tell $nick $host $hand $chan $chan1 login.2 "$black(chanserv)"
+	return
+}
+	putserv "PRIVMSG $black(hostchanserv) :login $black(username) $black(password)"
+   	putserv "MODE $botnick :$black(xmod)"
+
+if {[info exists black(notlogged)] || [info exists black(notlogged:failed)] || [info exists black(notlogged:invalid)]} {
+	blacktools:tell $nick $host $hand $chan $chan1 login.3 "$black(chanserv)"
+	}
+}
+
+################################## cp #######################################
+
+proc cp:getnum {} {
+	global black
+	set temp_num 0
+	set num 0
+	set counter 0	
+while {$temp_num == 0} {
+	set get [blacktools:ban:find_id $num]
+if {$get == "$num"} {
+	set num [expr $num + 1]
+	} else { 
+	set temp_num 1
+		}
+	}
+	return $num
+}
+
+proc cp:process {nick host hand chan chan1 type what from to} {
+	global black
+	set cmd_status [btcmd:status $chan $hand "cp" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+	set notvalid ""
+if {![regexp {^[&#]} $from] || (![regexp {^[&#]} $to] && ![string equal -nocase $to "all"])} {
+if {$type == "0"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "cp"
+}
+if {$type == "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "cp"
+}
+if {$type == "2"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "cp"
+}
+	return
+}
+
+if {![validchan $from]} {
+	lappend notvalid $from
+}
+if {![validchan $to]} {
+	lappend notvalid $to
+}
+if {$notvalid != ""} {
+	if {[llength $notvalid] > 1} {
+	blacktools:tell $nick $host $hand $chan $chan1 cp.3 $notvalid
+	} else {
+	blacktools:tell $nick $host $hand $chan $chan1 cp.2 $notvalid
+	}
+	return
+}
+	switch $what {
+	
+banlist {
+	set counter 0
+if {[llength [blacktools:banlist $from]] < 1} {
+	blacktools:tell $nick $host $hand $chan $chan1 cp.1 $from
+	return
+}
+foreach b [blacktools:banlist $from] {
+	set file [open $black(bans_file) "a"]
+	set num [cp:getnum]
+	set enc_chan [encoding convertto utf-8 $to]
+	set read_type [lindex [split $b] 0]
+	set read_host [lindex [split $b] 3]
+	set read_hand [lindex [split $b] 4]
+	set read_time1 [lindex [split $b] 5]
+	set read_time2 [lindex [split $b] 6]
+	set read_num1 [lindex [split $b] 7]
+	set read_num2 [lindex [split $b] 8]
+	set read_reason [join [lrange [split $b] 9 end]]
+	
+	set return [blacktools:ban:exists $read_host $enc_chan]
+if {$return == ""} {
+	set counter [expr $counter + 1]
+	puts $file "$read_type $num [string tolower $enc_chan] [string tolower $read_host] $read_hand $read_time1 $read_time2 $read_num1 $read_num2 $read_reason"
+	}
+	close $file
+}
+	blacktools:tell $nick $host $hand $chan $chan1 cp.4 "$counter"
+}
+
+badchans {
+	set total_counter 0
+	set inc 0
+	set file [open $black(add_file) r]
+	set size [file size $black(add_file)]
+	set data [split [read $file $size] \n]
+	close $file
+foreach line $data {
+	set num 0
+	set temp_num 0
+	set read_chan [lindex [split $line] 0]
+	set enc_chan [encoding convertfrom utf-8 $read_chan]
+	set read_type [lindex [split $line] 1]
+if {[string match -nocase $enc_chan $from] && [string match -nocase $read_type "BADCHAN"]} {
+	set total_counter [expr $total_counter + 1]
+	set bdchan [lindex [split $line] 3]
+	set reason [join [lrange [split $line] 4 end]]
+	set findchan [prot:findbadchan $to $bdchan]
+if {$findchan != "1"} {
+	while {$temp_num == 0} {
+	set get [find:num $num $to "BADCHAN"]
+if {$get == "$num"} {
+	set num [expr $num + 1]
+	} else { set temp_num 1 }
+}
+	set inc [expr $inc + 1]
+	set file [open $black(add_file) a]
+	puts $file "$to BADCHAN $num $bdchan $reason"
+	close $file
+		}
+	}
+}
+	blacktools:tell $nick $host $hand $chan $chan1 cp.7 "$inc $total_counter"
+}
+
+userlist {
+	set time [unixtime]
+	set counter 0
+	set total_counter 0
+foreach u [userlist] {
+if {[matchattr $u $black(exceptflags) $from]} {
+	set total_counter [expr $total_counter + 1]
+	set cflags [chattr $u | $from]
+if {![matchattr $cflags $to]} {
+	set counter [expr $counter + 1]
+	chattr $u $cflags $to
+	setuser $u XTRA CHANMODIF($to) $time:cp_from_$from
+			}
+		}
+	}
+	blacktools:tell $nick $host $hand $chan $chan1 cp.5 "$counter $total_counter"
+}
+
+settings {
+	set getflags [get:flags $from]
+	set getstr [get:str $from]
+	set counter 0
+	set file [open $black(extra_file) a]
+foreach flag $getflags {
+if {[string equal -nocase $flag "+forward"]} {
+	continue
+}
+	set return [blacktools:flag:exists $to $flag]
+if {$return == "0"} {
+	set counter [expr $counter + 1]
+	puts $file "$to XTRA $flag"
+	}
+}
+foreach str $getstr {
+	set split_str [split $str "&&"]
+	set s [lindex $split_str 0]
+if {[string equal -nocase $s "backchan"]} {
+	continue
+}
+	set why [join [lrange $split_str 1 end]]
+	set return [blacktools:flag:exists $to $s]
+if {$return == "0"} {
+	set counter [expr $counter + 1]
+	puts $file "$to XTRA $s [concat $why]"
+	}
+}
+	set gettopic [topic:get $from]
+if {$gettopic != ""} {
+	set counter [expr $counter + 1]
+	msg:add $gettopic $to "TOPIC"
+}
+	close $file
+	blacktools:tell $nick $host $hand $chan $chan1 cp.6 "$counter"
+}
+
+	default {
+if {$type == "0"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "cp"	
+				}
+if {$type == "1"} {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "cp"
+			}
+		}
+	}
+}
+
+############################## status #################################
+
+proc status:process {nick host hand chan} {
+	global black botnick server uptime {server-online} countusers version getowner
+	set cmd_status [btcmd:status $chan $hand "status" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+	set getlang [string tolower [getuser $hand XTRA OUTPUT_LANG]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}	
+foreach c [channels] {
+if {![setting:get $c invisible]} {
+	lappend channels $c
+	} else {
+if {[matchattr $hand n]} {
+	lappend channels \002$c\002
+		}
+	}
+}
+	set chan1 "$chan"
+	blacktools:tell $nick $host $hand $chan $chan1 status.1 "$black(name) $black(vers) $version"
+	blacktools:tell $nick $host $hand $chan $chan1 status.4 [join $channels]
+	blacktools:tell $nick $host $hand $chan $chan1 status.5 "[countusers] [userlist n]"
+}
+
+############################## broadcast ##############################
+
+proc broadcast:cmd:process {nick host hand chan chan1 text type} {
+global botnick black
+	set cmd_status [btcmd:status $chan $hand "broadcast" 0]
+if {$cmd_status == "1"} { 
+	return
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+if {$text == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "broadcast"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "broadcast"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "broadcast"
+		}
+	}
+	return 0
+}
+
+foreach c [channels] {
+if {![setting:get $c silent]} {
+	putserv "PRIVMSG $c :\[\002BROADCAST\002\] $text"
+		}
+	}
+}
+
+############################## msg ####################################
+
+proc msg:process {nick host hand chan chan1 who msg type} {
+	global black
+	set cmd_status [btcmd:status $chan $hand "msg" 0]
+if {$cmd_status == "1"} { 
+	return
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick $host $hand $chan $chan1 gl.suspend none
+	return
+}
+
+if {$who == ""} {
+switch $type {
+	0 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr "msg"
+	}
+	1 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "msg"
+	}
+	2 {
+	blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "msg"
+		}
+	}
+	return
+}
+
+
+if {[isbotnick $who]} { 
+	return
+}
+	putserv "USERHOST :$who"
+	bind RAW - 302 msg:online:check
+	set ::msgnick $nick
+	set ::hand $hand
+	set ::host $host
+	set ::chan $chan
+	set ::chan1 $chan1
+	set ::type $type
+	set ::msg $msg
+	set ::who $who
+}
+
+proc msg:online:check {from keyword arguments } {
+	global black
+	set msgnick $::msgnick
+	set hand $::hand
+	set host $::host
+	set chan $::chan
+	set chan1 $::chan1
+	set who $::who
+	set msg $::msg
+	
+	set hostname [lindex [split $arguments] 1]
+if {[regexp {\+} $hostname]} {
+	set split_host [split $hostname "+"]
+} else {
+	set split_host [split $hostname "-"]
+}
+	set mask [lindex $split_host 1]
+	set getnick [string map {
+			"=" ""
+			":" ""
+			} [lindex $split_host 0]]
+if {$getnick != ""} {
+if {[matchattr $hand -|A $chan] && [string equal -nocase $who $black(chanserv)]} {
+	check:if:bind "msg:online:check" "302"
+	return
+}
+if {$host != ""} {
+if {[matchattr $hand -|AM $chan] && [onchan $who $chan]} {
+	putserv "PRIVMSG $who :$msg"
+	check:if:bind "msg:online:check" "302"
+	return
+	}
+}
+if {[matchattr $hand mno]} {
+	putserv "PRIVMSG $who :$msg"
+}
+	} else {
+	blacktools:tell $msgnick $host $hand $chan $chan1 gl.notonline "$who"
+}
+	check:if:bind "msg:online:check" "302"
+}
+
+############################### channels ########################
+
+proc channels:process {nick host hand chan chan1} {
+global botnick black
+	set cmd_status [btcmd:status $chan $hand "channels" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set num [llength [channels]]
+	set minusers "5"
+	set getlang [string tolower [getuser $hand XTRA OUTPUT_LANG]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+
+foreach c [channels] {
+if {![setting:get $c invisible]} {
+	set usersnumber [llength [chanlist $c]]
+if {[channel get $c inactive]} {
+if {[info exists black(abuse:$c)]} {
+	lappend message_aschan "[join $c ", "]"
+} else {
+	lappend message_schan "[join $c ", "]"
+}
+} elseif {![onchan $botnick $c]} {
+	lappend message_nchan "[join $c ", "]"	
+} elseif {[onchan $botnick $c] && (![botisop $c]) && ($usersnumber >= $minusers)} {
+	lappend message_ok "[join $c ", "]"
+} elseif {[onchan $botnick $c] && ($usersnumber < $minusers)} {
+	lappend message_nmin "[join $c ", "]"
+}
+if {[botisop $c] && ($usersnumber >= $minusers)} {
+	lappend message_ok "[join @$c ", "]"
+			}
+		} else {
+if {[matchattr $hand n]} {
+	lappend message_inv "[join $c ", "]"
+			}		
+		}
+	}
+
+	blacktools:tell $nick $host $hand $chan $chan1 channels.1 $num
+if {[info exists message_ok]} {
+foreach word [wordwrap [join "\[$black(say.$getlang.channels.3)\]: $message_ok"] 350 ,] {
+	blacktools:tell $nick $host $hand $chan $chan1 channels.2 $word
+	}
+}
+if {[info exists message_nchan]} {
+foreach word [wordwrap [join "\[$black(say.$getlang.channels.4)\]: $message_nchan"] 350 ,] {
+	blacktools:tell $nick $host $hand $chan $chan1 channels.2 $word
+	}
+}
+if {[info exists message_nmin]} {
+foreach word [wordwrap [join "\[$black(say.$getlang.channels.7) < $minusers\]: $message_nmin"] 350 ,] {
+	blacktools:tell $nick $host $hand $chan $chan1 channels.2 $word
+	}
+}
+if {[info exists message_schan]} {
+foreach word [wordwrap [join "\[$black(say.$getlang.channels.5)\]: $message_schan"] 350 ,] {
+	blacktools:tell $nick $host $hand $chan $chan1 channels.2 $word
+		}
+	}
+if {[info exists message_aschan]} {
+foreach word [wordwrap [join "\[$black(say.$getlang.channels.6)\]: $message_aschan"] 350 ,] {
+	blacktools:tell $nick $host $hand $chan $chan1 channels.2 $word
+		}
+	}
+if {[info exists message_inv]} {
+foreach word [wordwrap [join "\[$black(say.$getlang.channels.8)\]: $message_inv"] 350 ,] {
+	blacktools:tell $nick $host $hand $chan $chan1 channels.2 $word
+		}
+	}
+}
+
+############################### nick ##################################
+
+proc tempnick:process {thenick tonick host hand chan chan1 type} {
+	global nick lastbind
+	set cmd_status [btcmd:status $chan $hand "nick" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {$thenick == ""} {
+switch $type {
+	0 {
+	blacktools:tell $tonick $host $hand $chan $chan1 gl.instr "nick"
+	}
+	1 {
+	blacktools:tell $tonick $host $hand $chan $chan1 gl.instr_nick "nick"
+	}
+	2 {
+	blacktools:tell $tonick $host $hand $chan $chan1 gl.instr_priv "nick"
+		}
+	}
+	return
+}
+	set nick $thenick
+	blacktools:tell $tonick $host $hand $chan $chan1 nick.4 $thenick		
+}
+
+proc nick:process {who newnick host hand chan} {
+global black nick config
+	set chan1 "$chan"
+if {$newnick == ""} {
+	blacktools:tell $who $host $hand $chan $chan1 nick.2 $newnick
+	return
+}
+	blacktools:tell $who $host $hand $chan $chan1 nick.1 $newnick
+	set ::lastnick [config:getinfo $config "set nick \"*\""]
+	set nick [join $newnick]
+	set error [config:save $config "set nick \"*\"" "set nick \"$newnick\""]
+if {$error == "0"} {
+	blacktools:tell $who $host $hand $chan $chan1 nick.3 ""
+	}
+	bind RAW - 432 check:validnickname
+}
+
+##############
+#########################################################################
+##   END                                                               ##
+#########################################################################

+ 2226 - 0
BlackTools2.5.2/Commands/BT.PrvCmds.tcl

@@ -0,0 +1,2226 @@
+#########################################################################
+##          BlackTools - The Ultimate Channel Control Script           ##
+##                    One TCL. One smart Eggdrop                       ##
+#########################################################################
+#######################   PRIVMSG CMDS TCL   ############################
+#########################################################################
+##						                       ##
+##   BlackTools  : http://blacktools.tclscripts.net	               ##
+##   Bugs report : http://www.tclscripts.net/	                       ##
+##   GitHub page : https://github.com/tclscripts/BlackToolS-TCL-script ##
+##   Online Help : irc://irc.undernet.org/tcl-help 	               ##
+##                 #TCL-HELP / UnderNet                                ##
+##                 You can ask in english or romanian                  ##
+##					                               ##
+#########################################################################
+
+proc command:pubpriv {nick host hand arg} {
+	global black server uptime {server-online} botnick userfile
+	set cmd [lindex [split $arg] 0]
+	set chan [lindex [split $arg] 1]
+	set check_code [join [lrange [split $arg] 2 end]]
+	set chan1 $nick
+	set found_access 0
+	set mychan_use 0
+if {![regexp {^[&#]} $chan]} {
+if {[validuser $hand]} {
+	set mychan [join [string tolower [getuser $hand XTRA MYCHAN]]]
+if {[validchan $mychan] && [matchattr $hand nmo|OVMA $mychan] && ![string equal -nocase $cmd "unbanme"]} {
+	set chan [string tolower $mychan]
+	set mychan_use 1
+		}
+	}
+}
+
+switch [string tolower $cmd] {
+
+login {
+if {[matchattr $hand mn]} {
+	set type 2
+	set chan1 $chan
+	login:process $nick "prv" $hand $chan $chan1
+	}
+}
+
+report {
+
+	set type 2
+	set what [lindex [split $arg] 2]
+	set message [join [lrange [split $arg] 3 end]]
+if {$mychan_use == "1"} {
+	set what [lindex [split $arg] 1]
+	set message [join [lrange [split $arg] 2 end]]
+}
+	set chan1 $chan
+if {[matchattr $hand mno|MAO $chan]} {
+	return
+}
+	report:process $nick "prv" $host $hand $chan $chan1 $type $what $message
+}
+
+idle {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 2
+	set chan1 "$chan"	
+	set why [lindex [split $arg] 2]
+	set user [lindex [split $arg] 3]
+	set host [lindex [split $arg] 4]
+if {$mychan_use == "1"} {
+	set why [lindex [split $arg] 1]
+	set user [lindex [split $arg] 2]
+	set host [lindex [split $arg] 3]
+}
+	antidle:process $why $type $user "prv" $nick $hand $chan $chan1
+	}
+}
+
+
+link {
+if {[matchattr $hand nmo]} {
+	set type 2
+	set channels [join [lrange [split $arg] 1 end]]
+	set what [lindex [split $arg] 1]
+	set delchan [lindex [split $arg] 2]
+	set chan1 $chan
+	link:process $nick "prv" $hand $chan $chan1 $type $what $channels $delchan
+	}
+}
+
+note {
+	set found_access 0
+foreach c [channels] {
+if {[matchattr $hand nmo|MAOV $c]} {
+	set found_access 1
+	}
+}
+if {$found_access == "1"} {
+	set type 2
+	set chan1 $chan
+	set who [lindex [split $arg] 1]
+	set note [join [lrange [split $arg] 1 end]]
+	set number [lindex [split $arg] 2]
+	set user_send [lindex [split $arg] 2]
+	set note_send [join [lrange [split $arg] 3 end]]
+	note:process $nick "prv" $hand $chan $chan1 $who $note $user_send $note_send $number $type
+	}
+}
+
+q {
+if {[matchattr $hand nmo|MAOV $chan]} {
+if {$mychan_use == "1"} {
+	set who [lindex [split $arg] 1]
+	set next [lindex [split $arg] 2]
+	set quote [join [lrange [split $arg] 1 end]]
+if {$who == "*"} {
+	set who [lindex [split $arg] 2]
+	set quote [join [lrange [split $arg] 1 end]]
+}
+if {[regexp {^[\[]} $who]} {
+	set who [lindex [split $arg] 2]
+	set quote [join [lrange [split $arg] 1 end]]
+if {$who == "*"} {
+	set who [lindex [split $arg] 3]
+	set quote [join [lrange [split $arg] 1 end]]
+		}
+	}
+} else {
+	set who [lindex [split $arg] 2]
+	set next [lindex [split $arg] 3]
+	set quote [join [lrange [split $arg] 2 end]]
+if {$who == "*"} {
+	set who [lindex [split $arg] 3]
+	set quote [join [lrange [split $arg] 2 end]]
+}
+if {[regexp {^[\[]} $who]} {
+	set who [lindex [split $arg] 3]
+	set quote [join [lrange [split $arg] 2 end]]
+if {$who == "*"} {
+	set who [lindex [split $arg] 4]
+	set quote [join [lrange [split $arg] 2 end]]
+		}
+	}
+}
+	set type 2
+	set chan1 $chan
+if {$mychan_use == "1"} {
+	quote:process $nick "prv" $hand $chan $chan1 $type $who $quote [lrange [split $arg] 1 end] $next
+	} else {
+	quote:process $nick "prv" $hand $chan $chan1 $type $who $quote [lrange [split $arg] 2 end] $next
+		}
+	}
+}
+
+check {
+if {![validchan $chan]} {
+	return
+}
+if {[setting:get $chan securemode] == "0"} {
+	return
+}
+if {![botisop $chan] && ![setting:get $chan xonly]} {
+	return
+}
+	
+if {![info exists black(securecode:$nick:$chan)]} {
+	return
+}
+	set chanmode [getchanmode $chan]
+if {[string match -nocase "*D*" $chanmode] && [string match -nocase "*m*" $chanmode]} {
+if {[string equal -nocase $check_code $black(securecode:$nick:$chan)]} {
+		set lang [setting:get $chan lang]
+if {$lang == ""} { set lang [string tolower $black(default_lang)] }
+if {[setting:get $chan xonly] && [onchan $black(chanserv) $chan]} {
+	putserv "PRIVMSG $black(chanserv) :voice $chan $nick"
+	set replace(%chan%) $chan
+	set replace(%msg.1%) $nick
+	set message [string map [array get replace] $black(say.$lang.securemode.2)]
+	putserv "PRIVMSG $nick :$message"
+if {[info exists black(secure:$chan:allowlist)]} {
+if {[lsearch -exact [string tolower $black(secure:$chan:allowlist)]  [string tolower $host]] < 0} {
+	lappend black(secure:$chan:allowlist) $host
+	}
+} else { lappend black(secure:$chan:allowlist) $host }
+		} else {
+	putserv "MODE $chan +v $nick"
+	set replace(%chan%) $chan
+	set replace(%msg.1%) $nick
+	set message [string map [array get replace] $black(say.$lang.securemode.2)]
+	putserv "PRIVMSG $nick :$message"
+if {[info exists black(secure:$chan:allowlist)]} {
+if {[lsearch -exact [string tolower $black(secure:$chan:allowlist)]  [string tolower $host]] < 0} {
+	lappend black(secure:$chan:allowlist) $host
+						}
+					} else { lappend black(secure:$chan:allowlist) $host }
+}
+if {[info exists black(securecode:$nick:$chan)]} {
+	unset black(securecode:$nick:$chan)
+				}
+if {[lsearch -exact [string tolower $black(secure:$chan:list)]  [string tolower $nick]] > -1} {
+	set position [lsearch -exact [string tolower $black(secure:$chan:list)] [string tolower $nick]]
+	set black(secure:$chan:list) [lreplace $black(secure:$chan:list) $position $position]
+			}
+		}
+	}
+}
+
+voiceme {
+if {![validchan $chan]} {
+	return
+}
+if {[setting:get $chan voiceme]} {
+
+if {![botisop $chan] && ![setting:get $chan xonly]} {
+	return
+}
+if {![onchan $nick $chan]} {
+	return
+}
+
+if {[isop $nick $chan] || [isvoice $nick $chan]} {
+	return
+}
+
+if {[setting:get $chan onlyonmode] && ![info exists black(voiceme:stat:$chan)]} {
+	return
+}
+if {[isvoice $nick $chan]} {
+	blacktools:tell $nick "prv" $hand $chan $chan1 voiceme.4 none
+	return
+}
+
+if {[setting:get $chan nologged]} {
+		set code [join [lrange [split $arg] 2 end]]
+if {$code == ""} {
+	set black(voicemecode:$chan) [string toupper [bot:setcode]]
+	blacktools:tell $nick "prv" $hand $chan $chan1 voiceme.5 $black(voicemecode:$chan)
+foreach tmr [utimers] {
+if {[string match "*unset black(voicemecode:$chan)*" [join [lindex $tmr 1]]]} {
+	killutimer [lindex $tmr 2]
+			}	
+		}
+	utimer 60 [list unset black(voicemecode:$chan)]
+	return
+}
+
+if {![info exists black(voicemecode:$chan)]} {
+	return
+}
+
+if {[string equal -nocase $code $black(voicemecode:$chan)]} {
+if {[setting:get $chan xonly] && [onchan $black(chanserv) $chan]} {	
+	putserv "PRIVMSG $black(chanserv) :voice $chan $nick"
+	blacktools:tell $nick "prv" $hand $chan $chan1 voiceme.3 none
+		} else {
+	putserv "MODE $chan +v $nick"
+	blacktools:tell $nick "prv" $hand $chan $chan1 voiceme.3 none
+		}
+	}
+} else {
+	putserv "WHOIS $nick"
+	set ::vnick $nick
+	set ::vchan $chan
+	set ::vhand $hand
+	set ::vhost $host
+	bind RAW - 330 voiceme:logged
+	bind RAW - 307 voiceme:identified
+		}
+	}
+}
+
+unbanme {
+
+if {![regexp {^[&#]} $chan]} {
+	return
+}
+
+if {![validchan $chan]} {
+	return
+}
+if {![botisop $chan] && ![setting:get $chan xonly]} {
+	return
+}
+	set found_ban 0
+foreach b [blacktools:banlist $chan] {
+	set read_chan [lindex [split $b] 2]
+if {[string equal -nocase $read_chan $chan]} {
+	set read_host [lindex [split $b] 3]
+	set real_read_host [string map [list \[ {\[} \] {\]} \? {\?} \\ {\\}] $read_host]
+if {[string match -nocase $real_read_host "$nick!$host"] || [string match -nocase "$nick!$host" $real_read_host]} {
+	set read_bot [lindex [split $b] 7]
+if {$read_bot == 3} {
+	set found_ban 1
+			}
+		}
+	}
+}
+
+if {$found_ban == "0"} {
+	return
+}
+	set code [join [lrange [split $arg] 2 end]]
+
+if {$code == ""} {
+	set black(botcode:$chan) [string toupper [bot:setcode]]
+	blacktools:tell $nick "prv" $hand $chan $chan1 bot.6 $black(botcode:$chan)
+foreach tmr [utimers] {
+if {[string match "*unset black(botcode:$chan)*" [join [lindex $tmr 1]]]} {
+	killutimer [lindex $tmr 2]
+			}	
+		}
+	utimer 60 [list unset black(botcode:$chan)]
+	return
+}
+
+if {![info exists black(botcode:$chan)]} {
+	return
+}
+if {[string equal -nocase $code $black(botcode:$chan)]} {
+foreach b [blacktools:banlist $chan] {
+	set read_chan [lindex [split $b] 2]
+	set read_host [lindex [split $b] 3]
+	set real_read_host [string map [list \[ {\[} \] {\]} \? {\?} \\ {\\}] $read_host]
+if {[string match -nocase $real_read_host "$nick!$host"]} {
+	set read_bot [lindex [split $b] 7]
+if {$read_bot == 3} {
+if {[ischanban $read_host $chan] && [botisop $chan]} {
+	pushmode $chan -b $read_host
+							}
+if {[setting:get $chan xonly] || [setting:get $chan xtools]} {
+	putquick "PRIVMSG $black(chanserv) :unban $chan $read_host"
+						}
+	blacktools:auto:remove $read_host $chan
+	blacktools:tell $nick "prv" $hand $chan $chan1 bot.7 none
+				}
+			}
+		}
+	}
+}
+
+enable {
+if {[matchattr $hand nmo|M $chan]} {
+	set what [lindex [split $arg] 2]
+	set user [lindex [split $arg] 3]
+if {$mychan_use == "1"} {
+	set what [lindex [split $arg] 1]
+	set user [lindex [split $arg] 2]
+}
+	set chan1 "$chan"
+	set type "2"
+	enable:process $nick "prv" $hand $chan $chan1 $type $what $user
+	}
+}
+
+disable {
+if {[matchattr $hand nmo|M $chan]} {
+	set what [lindex [split $arg] 2]
+	set user [lindex [split $arg] 3]
+if {$mychan_use == "1"} {
+	set what [lindex [split $arg] 1]
+	set user [lindex [split $arg] 2]
+}
+	set chan1 "$chan"
+	set type "2"
+	disable:process $nick "prv" $hand $chan $chan1 $type $what $user
+	}
+}
+
+dr {
+if {[matchattr $hand nmo|OSMA $chan]} {
+	set drone [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set drone [lindex [split $arg] 1]
+}
+	set type 2
+	set chan1 "$chan"
+	userhost:act $drone $nick $hand "prv" $chan $chan1 $type $black(dr:bantime) "dr" "" "0"
+	}
+}
+
+bot {
+if {[matchattr $hand nmo|OSMA $chan]} {
+	set bot [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set bot [lindex [split $arg] 1]
+}
+	set type 2
+	set chan1 "$chan"
+	userhost:act $bot $nick "$hand:bot" "prv" $chan $chan1 $type $black(bot:bantime) "bot" "" "0"
+	}
+}
+
+n {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set badnick [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set badnick [lindex [split $arg] 1]
+}
+	set type 0
+	set chan1 "$chan"
+	
+if {[setting:get $chan nextshortcmd]} {
+	nextpublic:process $nick "prv" $hand $chan $chan1 $badnick
+	return
+}
+
+if {[regexp {\*} $badnick]} {
+	blacktools:tell $nick "prv" $hand $chan $chan1 gl.instr_priv "n"
+	return
+}
+if {$badnick == ""} {
+	blacktools:tell $nick "prv" $hand $chan $chan1 gl.instr_priv "n"
+	return
+		}
+	bancmds:process $badnick $badnick $nick $hand "prv" $chan $chan1 $type $black(n:bantime) "n" "" "0"
+	}
+}
+
+id {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set badident [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set badident [lindex [split $arg] 1]
+}
+	set handle [nick2hand $badident]
+	set type 2
+	set chan1 "$chan"
+	userhost:act $badident $nick $hand "prv" $chan $chan1 $type $black(id:bantime) "id" "" "0"
+	}
+}
+
+spam {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set spammer [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set spammer [lindex [split $arg] 1]
+}
+	set type 2
+	set chan1 "$chan"
+	userhost:act $spammer $nick $hand "prv" $chan $chan1 $type $black(spam:bantime) "spam" "" "0"
+	}
+}
+
+
+bw {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set badw [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set badw [lindex [split $arg] 1]
+}
+	set type 2
+	set chan1 "$chan"
+	userhost:act $badw $nick $hand "prv" $chan $chan1 $type $black(bw:bantime) "bw" "" "0"
+	}
+}
+
+mb {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set badd [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+if {$mychan_use == "1"} {
+	set badd [lindex [split $arg] 1]
+	set reason [join [lrange [split $arg] 2 end]]
+}
+	set type 2
+	set chan1 "$chan"
+	userhost:act $badd $nick $hand "prv" $chan $chan1 $type $black(mb:bantime) "mb" $reason "0"
+	}
+}
+
+black {
+if {[matchattr $hand nmo|MA $chan]} {
+	set blackb [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+if {$mychan_use == "1"} {
+	set blackb [lindex [split $arg] 1]
+	set reason [join [lrange [split $arg] 2 end]]
+}
+	set type 2
+	set chan1 "$chan"
+	userhost:act $blackb $nick $hand "prv" $chan $chan1 $type "0" "black" $reason "0"
+	}
+}
+
+bl {
+if {[matchattr $hand nmo|MA $chan]} {
+	set blackb [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+if {$mychan_use == "1"} {
+	set blackb [lindex [split $arg] 1]
+	set reason [join [lrange [split $arg] 2 end]]
+}
+	set type 2
+	set chan1 "$chan"
+	userhost:act $blackb $nick $hand "prv" $chan $chan1 $type "0" "black" $reason "0"
+	}
+}
+
+b {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set no_chan 0
+	set type 2
+	set gl 0
+	set link 0
+	set chan1 "$chan"
+	set level ""
+	set b [lindex [split $arg] 2]
+	set tm [lindex [split $arg] 3]
+	set global [lindex [split $arg] 4]
+	set reason [join [lrange [split $arg] 5 end]]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set global [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 4 end]]
+}
+if {![regexp {^[&#]} $chan]} {
+	set no_chan 1
+	set b [lindex [split $arg] 1]
+	set tm [lindex [split $arg] 2]
+	set global [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 4 end]]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set global [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+	}	
+}
+if {$mychan_use == "1"} {
+	set b [lindex [split $arg] 1]
+	set tm [lindex [split $arg] 2]
+	set global [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 4 end]]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set global [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+}
+if {[regexp {^[-]} $tm]} {
+	set level [blacktools:check:levelban $hand $chan $tm]
+	set reason [join [lrange [split $arg] 4 end]]
+	set tm [lindex [split $arg] 3]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set tm [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+		} 
+} elseif {[string equal -nocase "$global" "global"] && [matchattr $hand nm]} {
+	set gl 1
+	set tm [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 4 end]]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 3 end]]
+			} 
+} elseif {[string equal -nocase "$global" "link"] && [matchattr $hand nm]} {
+	set link 1
+	set tm [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 4 end]]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 3 end]]
+			}
+if {$no_chan == "1"} {
+	set b [lindex [split $arg] 1]
+	set tm [lindex [split $arg] 2]
+	set global [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 4 end]]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set global [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+			}
+		}				
+	} else {
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 2 end]]
+	} else {
+	set reason [join [lrange [split $arg] 3 end]]
+		}
+	}
+} else {
+if {[regexp {^[-]} $tm]} {
+	set level [blacktools:check:levelban $hand $chan $tm]
+	set reason [join [lrange [split $arg] 5 end]]
+	set tm [lindex [split $arg] 4]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set tm [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 4 end]]
+		} 
+} elseif {[string equal -nocase "$global" "global"] && [matchattr $hand nm]} {
+	set gl 1
+	set tm [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 5 end]]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 4 end]]
+			}
+if {$no_chan == "1"} {
+	set b [lindex [split $arg] 1]
+	set tm [lindex [split $arg] 2]
+	set global [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 4 end]]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set global [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+		}
+	}			
+} elseif {[string equal -nocase "$global" "link"] && [matchattr $hand nm]} {
+	set link 1
+	set tm [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 5 end]]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 4 end]]
+			}
+if {$no_chan == "1"} {
+	set b [lindex [split $arg] 1]
+	set tm [lindex [split $arg] 2]
+	set global [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 4 end]]
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set global [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+			}
+		}				
+	} else {
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 3 end]]
+	} else {
+	set reason [join [lrange [split $arg] 4 end]]
+		}
+	}
+}
+	
+if {[setting:get $chan nextshortcmd]} {
+	noidlepublic:process $nick "prv" $hand $chan $chan1 $b 0
+	return
+}
+
+if {($return_time > "20160" || $return_time == "0")  && [matchattr $hand -|OS $b]} {
+	blacktools:tell $nick "prv" $hand $chan $chan1 b.6 none
+	return
+}
+if {$return_time == "-1"} {
+	set return_time $black(b:bantime)
+}
+if {[llength $level] > "1"} {
+	blacktools:tell $nick "prv" $hand $chan $chan1 gl.invalidlevel [string map {"0" ""} $level]
+	return
+}
+	
+if {$level != ""} {
+	userhost:act $b $nick "$hand:$level" "prv" $chan $chan1 $type $return_time "b" $reason $gl
+} else {
+if {$link == "1"} {
+	foreach c [link:get] {
+	userhost:act $b $nick "$hand" "prv" $c $chan1 $type $return_time "b" $reason "2"
+	}
+	return
+}
+	userhost:act $b $nick "$hand" "prv" $chan $chan1 $type $return_time "b" $reason $gl
+		}
+	}
+}
+
+stick {
+if {[matchattr $hand nmo|M $chan]} {
+	set stickb [lindex [split $arg] 2]
+	set tm [lindex [split $arg] 3]
+if {$mychan_use == "1"} {
+	set stickb [lindex [split $arg] 1]
+	set tm [lindex [split $arg] 2]
+}
+	set return_time [time_return_minute $tm]
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 3 end]]
+if {$mychan_use == "1"} {
+	set reason [join [lrange [split $arg] 2 end]]
+	}
+} else {
+	set tm [lindex [split $arg] 4]
+	set reason [join [lrange [split $arg] 4 end]]
+if {$mychan_use == "1"} {
+	set tm [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 3 end]]
+	}
+}
+	set type 2
+	set chan1 "$chan"
+if {($return_time > "20160" || $return_time == "0")  && [matchattr $hand -|OS $stickb]} {
+	blacktools:tell $nick "prv" $hand $chan $chan1 b.6 none
+	return
+}
+
+if {$return_time == "-1"} {
+	set return_time $black(stick:bantime)
+}
+	userhost:act $stickb $nick $hand "prv" $chan $chan1 $type $return_time "stick" $reason "0"
+	}
+}
+
+ub {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set ban [lindex [split $arg] 1]
+	set why [lindex [split $arg] 2]
+if {[regexp {^[&#]} $ban]} { 
+	set ban [lindex [split $arg] 2]
+	set why [lindex [split $arg] 3]
+}
+	set type 2
+	set chan1 "$chan"
+if {[regexp {^[0-9]} $ban]} {
+	set cmd "ub:id"
+} else {
+	set cmd "ub"
+}
+if {[string equal -nocase $why "global"] && [matchattr $hand nm]} {
+	ub:process $ban $ban $nick $hand $host $chan $chan1 $type "1" $cmd "" "" "prv"
+} elseif {[string equal -nocase $why "link"] && [matchattr $hand nm]} {
+	ub:process $ban $ban $nick $hand $host $chan $chan1 $type "" "ub" "" "1" "prv"
+} else {
+	ub:process $ban $ban $nick $hand $host $chan $chan1 $type "" $cmd "" "" "prv"
+		}
+	}
+}
+
+k {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set knick [lindex [split $arg] 2]
+	set type 2
+	set reason [join [lrange [split $arg] 3 end]]
+if {$mychan_use == "1"} {
+	set knick [lindex [split $arg] 1]
+	set reason [join [lrange [split $arg] 2 end]]
+}
+	set handle [nick2hand $knick]
+	set chan1 "$chan"
+if {$knick != ""} {
+	k:process $knick $nick $hand "prv" $reason $chan $chan1 $type
+		} else {k:process $knick $nick $hand "prv" $reason $chan $chan1 $type}
+	}
+}
+
+w {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set wnick [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set wnick [lindex [split $arg] 1]
+}
+	set type 2
+	set handle [nick2hand $wnick]
+	set chan1 "$chan"
+if {$wnick != ""} {
+	w:process $wnick $nick $hand "prv" $chan $chan1 $type
+		} else { w:process $wnick $nick $hand "prv" $chan $chan1 $type }
+	}
+}
+
+ungag {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set gagger [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set gagger [lindex [split $arg] 1]
+}
+	set type 2
+	set chan1 "$chan"
+if {$gagger != ""} {
+	ungag:process $gagger $nick $hand "prv" $chan $chan1 $type
+	} else { ungag:process $gagger $nick $hand "prv" $chan $chan1 $type }
+	}
+}
+
+gag {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set gagger [lindex [split $arg] 2]
+	set time [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 4 end]]
+if {$mychan_use == "1"} {
+	set gagger [lindex [split $arg] 1]
+	set time [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 3 end]]
+}
+	set type 2
+	set handle [nick2hand $gagger]
+	set chan1 "$chan"
+	set return_time [time_return_minute $time]
+if {$return_time == "-1"} {
+	set reason [join [lrange [split $arg] 3 end]]
+	set time [setting:get $chan gag-bantime]
+if {$time == ""} {
+	set time $black(gag:bantime)
+	}
+}
+
+if {$gagger != ""} {
+	gag:process $gagger $time $reason $nick "$hand:GAG" "prv" $chan $chan1 $type
+		} else { gag:process $gagger $time $reason $nick $hand "prv" $chan $chan1 $type }
+	}
+}
+
+show {
+if {[matchattr $hand nmo|M $chan]} {
+	set wich [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set wich [lindex [split $arg] 1]
+}
+	set type 2
+	set chan1 "$chan"
+	show:process $nick "prv" $hand $chan $chan1 $wich $type
+	}
+}
+
+clonescan {
+if {[matchattr $hand nmo|MA $chan]} {
+	set why [lindex [split $arg] 2]
+	set type 2
+	set chan1 "$chan"
+if {[regexp {^[&#]} $chan] && [matchattr $hand nmo|M $chan] && ($why != "")} {
+	set chan1 "$chan"
+	set clone [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+	prot:module:process $nick "prv" $hand $chan $chan1 $chan $clone $type $number "clonescan"
+	return
+		}
+	scanner:process $nick "prv" $hand $chan $chan1 $type
+	}
+}
+
+sb {
+if {[matchattr $hand nmo|VMAO $chan]} {
+	set bhost [lindex [split $arg] 2]
+	set what [lindex [split $arg] 3]
+if {$mychan_use == "1"} {
+	set bhost [lindex [split $arg] 1]
+	set what [lindex [split $arg] 2]
+}
+	set type 2
+	set chan1 "$chan"
+if {$bhost != ""} {
+if {[regexp {^[0-9]} $bhost]} {
+	sb:process $bhost "prv" $nick $hand $host $chan $chan1 $type "sb" "2"
+	return
+}
+if {![validchan $chan]} {
+	blacktools:tell $nick "prv" $hand $chan $chan1 gl.novalidchan none
+	return
+}
+if {[onchan $bhost $chan]} {
+	set bhost "$bhost![getchanhost $bhost $chan]"
+	sb:process $bhost "prv" $nick $hand $host $chan $chan1 $type "sb" "1"
+	return
+}
+
+if {[regexp {\*} $bhost]} {
+	sb:process $bhost "prv" $nick $hand $host $chan $chan1 $type "sb" "1"
+	return
+}
+	sb:process $bhost "prv" $nick $hand $host $chan $chan1 $type "sb" ""
+
+		} else { sb:process $bhost "prv" $nick $hand $host $chan $chan1 $type "sb" ""}
+	}
+}
+
+banlist {
+if {[matchattr $hand nmo|AOM $chan]} {
+	set user [lindex [split $arg] 2]
+	set next [lindex [split $arg] 3]
+if {$mychan_use == "1"} {
+	set user [lindex [split $arg] 1]
+	set next [lindex [split $arg] 2]
+}
+if {[string equal -nocase $chan "global"]} {
+	set user $chan
+}
+	set type 2
+	set chan1 "$chan"
+	banlist:process $nick "prv" $hand $chan $chan1 $user $type "banlist" $next
+	}
+}
+
+r {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set c [lindex [split $arg] 1]
+	set chan1 $chan
+if {$c != "" && [matchattr $hand nmo|AMO $c]} {
+	topic:refresh $nick "prv" $hand $c $chan1 $arg
+	return
+}
+	topic:refresh $nick "prv" $hand $chan $chan1 $arg
+	}
+}
+
+man {
+if {[matchattr $hand nmo|MASOV $chan]} {
+	set command [lindex [split $arg] 1]
+	set type 0
+	man:process $nick $host $hand $chan $chan1 $type $command
+	}
+}
+
+auto {
+if {[matchattr $hand nmo|MA $chan]} {
+	set type 0
+	set option [lindex [split $arg] 2]
+	set user [lindex [split $arg] 3]
+	set gl [lindex [split $arg] 4]
+if {$mychan_use == "1"} {
+	set option [lindex [split $arg] 1]
+	set user [lindex [split $arg] 2]
+	set gl [lindex [split $arg] 3]
+}
+	auto:process $nick "prv" $hand $chan $chan1 $user $option $gl $type 
+	}
+}
+
+version {
+if {[matchattr $hand nmo|MASOV $chan]} {
+	set text [lindex [split $arg] 1]
+	version:process $nick $host $hand $chan $chan1 $text
+	}
+}
+
+seen {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	set type 2
+if {[matchattr $hand nmo]} {
+	set s [lindex [split $arg] 1]
+if {[regexp {^[&#]} $s]} {
+	set s [lindex [split $arg] 2]
+	}
+		} else {
+if {![regexp {^[&#]} $chan]} {
+	blacktools:tell $nick "prv" $hand $chan $chan1 gl.instr_priv "seen"
+	return
+}
+	set s [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set s [lindex [split $arg] 1]
+	}
+}
+	seen:process $nick "$host:prv" $hand $chan $chan1 $s $type
+	}
+}
+
+channels {
+if {[matchattr $hand nmo]} {
+	set chan1 "$nick"
+	channels:process $nick "prv" $hand $chan $chan1
+	}
+}
+
+userlist {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	set type 2
+	set chan1 $nick
+	set level [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set level [lindex [split $arg] 1]
+}
+if {[string equal -nocase $chan "owner"] && [matchattr $hand nmo]} {
+	userlist:execute $hand "prv" $chan $chan $chan1 $nick $type
+	return
+}
+	userlist:execute $hand "prv" $level $chan $chan1 $nick $type
+	}
+}
+
+chuser {
+if {[matchattr $hand nmo|M $chan]} {
+	set user [lindex [split $arg] 1]
+	set chandle [lindex [split $arg] 2]
+	set type 2
+	set chan1 "$nick"
+	chuser:process $nick "prv" $hand $chan $chan1 $user $chandle $type
+	}
+}
+
+securemode {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 2
+	set chan1 "$chan"
+	set why [lindex [split $arg] 2]
+	set except [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {$mychan_use == "1"} {
+	set why [lindex [split $arg] 1]
+	set except [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+		}
+	prot:module:process $nick "prv" $hand $chan $chan1 $why $except $type $number "securemode"
+	}
+}
+
+delhost {
+if {[matchattr $hand nmo|MA $chan]} {
+	set user [lindex [split $arg] 1]
+	set type 2
+	set chan1 "$chan"
+	set hosts [join [lrange [split $arg] 2 end]]
+	delhost:process $nick "prv" $hand $chan $chan1 $user $hosts $type
+	}
+}
+
+addhost {
+if {[matchattr $hand nmo|MA $chan]} {
+	set type 2
+	set chan1 "$chan"
+	set user [lindex [split $arg] 1]
+	set hosts [join [lrange [split $arg] 2 end]]
+	addhost:process $nick "prv" $hand $chan $chan1 $user $hosts $type
+	}
+}
+
+del {
+if {[matchattr $hand nmo|M $chan]} {
+	set args [lrange [split $arg] 1 end]
+	set type 2
+	set chan1 "$chan"
+	del:process $nick "prv" $hand $chan $chan1 $args $type
+	}
+}
+
+delacc {
+if {[matchattr $hand nmo|MA $chan]} {
+	set args [lrange [split $arg] 2 end]
+if {$mychan_use == "1"} {
+	set args [lrange [split $arg] 1 end]
+}
+	set type 2
+	set chan1 "$chan"
+foreach user $args {
+	delacc:process $nick "prv" $hand $chan $chan1 $user $type
+		}
+	}
+}
+
+
+add {
+if {[matchattr $hand nmo|MA $chan]} {
+	set level [lindex [split $arg] 2]
+	set type 2
+	set args [lrange [split $arg] 3 end]
+	set c [lindex [split $arg] 3]
+if {$mychan_use == "1"} {
+	set level [lindex [split $arg] 1]
+	set args [lrange [split $arg] 2 end]
+	set c [lindex [split $arg] 2]
+}
+	set chan1 "$chan"
+	set handle ""
+	set uhost ""
+if {$args != ""} {
+if {[string equal -nocase $level [blacktools:getlevelname 9 $hand]]} {
+	set user [lindex $args 0]
+	set reason [join [lrange $args 1 end]]
+if {$user != ""} {
+if {[validchan $chan] && [onchan $user $chan]} {
+	set handle [nick2hand $user]
+	set hosts [getchanhost $user $chan]
+	set uhost [return_mask $black(hostdefaultadd) $hosts $user]
+	add:process $user $uhost $handle $level $hand "prv" $chan $chan1 $nick $type "add" $reason "ban"
+} else {
+if {![string is alnum $user]} {
+	blacktools:tell $nick "prv" $hand $chan $chan1 add.18 none
+	continue
+}
+	add:process $user $uhost $handle $level $hand "prv" $chan $chan1 $nick $type "add" $reason "ban"
+		}
+	}
+	return
+}
+foreach user $args {
+if {$user != ""} {
+if {[validchan $chan] && [onchan $user $chan]} {
+	set handle [nick2hand $user]
+	set hosts [getchanhost $user $chan]
+	set uhost [return_mask $black(hostdefaultadd) $hosts $user]
+	add:process $user $uhost $handle $level $hand "prv" $chan $chan1 $nick $type "add" "" ""
+	continue
+} else {
+if {![string is alnum $user]} {
+	blacktools:tell $nick "prv" $hand $chan $chan1 add.18 none
+	continue
+}
+	add:process $user $uhost $handle $level $hand "prv" $chan $chan1 $nick $type "add" "" ""
+					}
+				}
+			}
+		} else {  add:process "" $uhost $handle $level $hand "prv" $chan $chan1 $nick $type "add" "" ""}	
+	}
+}
+
+suspend {
+if {[matchattr $hand nmo]} {
+	set reason [join [lrange [split $arg] 2 end]]
+	set cmd_status [btcmd:status $chan $hand "suspend" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chan1 "$chan"
+if {$chan == ""} {blacktools:tell $nick "prv" $hand $chan $chan1 gl.instr_priv "suspend"
+	return
+}
+if {![regexp {^[&#]} $chan]} {
+	blacktools:tell $nick "prv" $hand $chan $chan1 gl.novalidchan none
+	return
+}
+if {![validchan $chan]} { blacktools:tell $nick "prv" $hand $chan $chan1 gl.novalidchan none
+	return
+}
+
+if {[channel get $chan inactive]} {
+	blacktools:tell $nick "prv" $hand $chan $chan1 suspend.3 $chan
+	return
+}
+	channel set $chan +inactive
+if {$reason == ""} { set reason "N/A" }
+	suspendchan:note $hand $chan $reason
+	blacktools:tell $nick "prv" $hand $chan $chan1 suspend.4 $chan
+	}
+}
+
+unsuspend {
+if {[matchattr $hand nmo]} {
+	set cmd_status [btcmd:status $chan $hand "unsuspend" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chan1 "$chan"
+if {$chan == ""} {blacktools:tell $nick "prv" $hand $chan $chan1 gl.instr_priv "unsuspend"
+	return
+}
+
+if {![regexp {^[&#]} $chan]} {
+	blacktools:tell $nick "prv" $hand $chan $chan1 gl.novalidchan none
+	return
+}
+ 
+if {![validchan $chan]} { blacktools:tell $nick "prv" $hand $chan $chan1 gl.novalidchan none
+	return
+}
+
+if {![channel get $chan inactive]} {
+	blacktools:tell $nick "prv" $hand $chan $chan1 unsuspend.3 $chan
+	return
+}
+	channel set $chan -inactive
+	blacktools:tell $nick "prv" $hand $chan $chan1 unsuspend.4 $chan
+	}
+}
+
+delchan {
+if {[matchattr $hand nmo]} {
+		set reason [join [lrange [split $arg] 2 end]]
+	set cmd_status [btcmd:status $chan $hand "delchan" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chan1 "$chan"
+if {$chan == ""} {blacktools:tell $nick "prv" $hand $chan $chan1 gl.instr_priv "delchan"
+	return
+}
+if {![regexp {^[&#]} $chan]} {
+	blacktools:tell $nick "prv" $hand $chan $chan1 gl.novalidchan none 
+	return
+} 
+
+if {![validchan $chan]} { blacktools:tell $nick "prv" $hand $chan $chan1 gl.novalidchan none
+	return
+}
+	set getlang [string tolower [getuser $hand XTRA OUTPUT_LANG]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+
+if {!($black(homechan) == "") && ![string equal -nocase $black(homechan) "#no_home_chan"]} {
+if {[string equal -nocase $chan $black(homechan)]} {
+	blacktools:tell $nick "prv" $hand $chan $chan1 delchan.5 $chan
+	return
+	}
+}
+	channel remove $chan
+	delchan:all $chan
+if {$reason == ""} { set reason "N/A" }
+	delchan:note $hand $chan $reason
+	blacktools:tell $nick "prv" $hand $chan $chan1 delchan.3 $chan
+	}
+}
+
+addchan {
+if {[matchattr $hand nmo]} {
+	set cmd_status [btcmd:status $chan $hand "addchan" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set key [lindex [split $arg] 2]
+	set chan1 "$chan"
+if {$chan == ""} {
+	blacktools:tell $nick "prv" $hand $chan $chan1 gl.instr_priv "addchan"
+	return
+}
+
+if {![regexp {^[&#]} $chan]} {	
+	blacktools:tell $nick "prv" $hand $chan $chan1 gl.novalidchan none
+	return
+} 
+
+if {[validchan $chan]} {
+	blacktools:tell $nick "prv" $hand $chan $chan1 addchan.2 $chan
+	return
+} else {
+	channel add $chan
+	blacktools:tell $nick "prv" $hand $chan $chan1 addchan.3 $chan
+if {$key != ""} {
+	putquick "JOIN $chan :$key"
+	channel set $chan chanmode "+ntk $key"
+			}		
+		}
+	}
+}
+
+die {
+if {[matchattr $hand nm]} {
+	set cmd_status [btcmd:status $chan $hand "die" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chan1 "$chan"
+	set reason [join [lrange [split $arg] 1 end]]
+	set getlang [string tolower [getuser $hand XTRA OUTPUT_LANG]]
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+	blacktools:tell $nick "prv" $hand $chan $chan1 die.1 none
+if {$reason == ""} {
+	set text [black:color:set "" $black(say.$getlang.die.2)]
+	set reply [join $text]
+	set reason $reply
+}
+	utimer 3 [list die $reason]
+	}
+}
+
+jump {
+if {[matchattr $hand nm]} {
+	set cmd_status [btcmd:status $chan $hand "jump" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+set chan1 "$chan"
+set serv [lindex [split $arg] 1]
+if {$serv == ""} {
+	blacktools:tell $nick "prv" $hand $chan $chan1 jump.1 "..."
+	utimer 3 [list jump]
+} else {
+	blacktools:tell $nick "prv" $hand $chan $chan1 jump.1 "\002$serv\002"
+	utimer 3 [list jump $serv]
+		}	
+	}
+}
+
+save {
+if {[matchattr $hand nm]} {
+	set cmd_status [btcmd:status $chan $hand "save" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chan1 "$chan"
+	blacktools:tell $nick "prv" $hand $chan $chan1 save.1 none
+	save
+	}
+}
+
+restart {
+if {[matchattr $hand nm]} {
+	set cmd_status [btcmd:status $chan $hand "restart" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chan1 "$chan"
+	blacktools:tell $nick "prv" $hand $chan $chan1 restart.1 none
+	utimer 3 [list restart]
+	}
+}
+
+
+rehash {
+if {[matchattr $hand nm]} {
+	set cmd_status [btcmd:status $chan $hand "rehash" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chan1 "$chan"
+	blacktools:tell $nick "prv" $hand $chan $chan1 rehash.1 none
+	rehash
+	}
+}
+
+nick {
+if {[matchattr $hand nm]} {
+	set thenick [lindex [split $arg] 1]
+	set chan1 $chan
+	set type 2
+	tempnick:process $thenick $nick "prv" $hand $chan $chan1 $type
+	}
+}
+
+msg {
+if {[matchattr $hand nmo]} {
+	set who [lindex [split $arg] 1]	
+	set chan1 "$chan"
+	set type 2
+	set msg [join [lrange [split $arg] 2 end]]
+	msg:process $nick "prv" $hand $chan $chan1 $who $msg $type
+	}
+}
+
+omsg {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set who [lindex [split $arg] 2]	
+	set chan1 "$chan"
+	set type 2
+	set msg [join [lrange [split $arg] 3 end]]
+	omsg:process $nick "prv" $hand $chan $chan1 $who $msg $type
+	}
+}
+
+set {
+if {[matchattr $hand nmo|M $chan]} {
+	set flags [lindex [split $arg] 2]
+	set type [join [lrange [split $arg] 3 end]]
+if {$mychan_use == "1"} {
+	set flags [lindex [split $arg] 1]
+	set type [join [lrange [split $arg] 2 end]]
+}
+	set type1 2
+	set chan1 "$chan"
+if {[matchattr $hand mn]} {
+if {[string equal -nocase "global" $chan]} {
+	set chan "$flags"
+	foreach c [channels] {
+	set:process $nick "prv" $hand $c $chan1 $flags $type $type1	
+		}
+		return
+			}
+		}
+	set:process $nick "prv" $hand $chan $chan1 $flags $type $type1
+	}
+}
+
+
+mode {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set modes [lindex [split $arg] 2]
+	set hosts [lindex [split $arg] 3]
+if {$mychan_use == "1"} {
+	set modes [lindex [split $arg] 1]
+	set hosts [lindex [split $arg] 2]
+}
+	set type 2
+	set chan1 "$chan"
+	mode:process $nick "prv" $hand $chan $chan1 $modes $type $hosts
+	}
+}
+
+cycle {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set reason [join [lrange [split $arg] 2 end]]
+if {$mychan_use == "1"} {
+	set reason [join [lrange [split $arg] 1 end]]
+}
+	set chan1 "$chan"
+	cycle:process $nick "prv" $hand $chan $chan1 $reason
+	}
+}
+
+purge {
+if {[matchattr $hand -|M $chan]} {
+	set reason [join [lrange [split $arg] 2 end]]
+if {$mychan_use == "1"} {
+	set reason [join [lrange [split $arg] 1 end]]
+}
+	set chan1 "$chan"
+if {$reason == ""} {
+	blacktools:tell $nick "prv" $hand $chan $chan1 purge.1 none
+	return
+}
+	purge:process $nick "prv" $hand $chan $chan1 $reason
+	}
+}
+
+broadcast {
+if {[matchattr $hand nm]} {
+	set text [join [lrange [split $arg] 2 end]]	
+	set chan1 "$chan"
+	set type 2
+	broadcast:cmd:process $nick "prv" $hand $chan $chan1 $text $type
+	}
+}
+
+act {
+if {[matchattr $hand nmo|MA $chan]} {
+	set text [join [lrange [split $arg] 2 end]]
+	set c [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set text [join [lrange [split $arg] 1 end]]
+	set c [lindex [split $arg] 1]
+}
+	set type 2
+	set chan1 "$chan"
+	act:process $nick "prv" $hand $chan $chan1 $text $type
+	}
+}
+
+say {
+if {[matchattr $hand nmo|MA $chan]} {
+	set text [join [lrange [split $arg] 2 end]]
+	set c [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set text [join [lrange [split $arg] 1 end]]
+	set c [lindex [split $arg] 1]
+}
+	set type 2
+	set chan1 "$chan"
+	say:process $nick "prv" $hand $chan $chan1 $text $type
+	}
+}
+
+v {
+if {[matchattr $hand nmo|VOMA $chan]} {
+	set voicex [join [lrange [split $arg] 2 end]]
+if {$mychan_use == "1"} {
+	set voicex [join [lrange [split $arg] 1 end]]
+}
+	set chan1 "$chan"
+	v:process $nick "prv" $hand $chan $chan1 $voicex
+	}
+}
+
+ho {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set hopex [join [lrange [split $arg] 2 end]]
+if {$mychan_use == "1"} {
+	set hopex [join [lrange [split $arg] 1 end]]
+}
+	set chan1 "$chan"
+	ho:process $nick "prv" $hand $chan $chan1 $hopex
+	}
+}
+
+o {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set opex [join [lrange [split $arg] 2 end]]
+if {$mychan_use == "1"} {
+	set opex [join [lrange [split $arg] 1 end]]
+}
+	set chan1 "$chan"
+	o:process $nick "prv" $hand $chan $chan1 $opex
+	}
+}
+
+private {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 2
+	set chan1 "$chan"
+	set why [lindex [split $arg] 2]
+	set user [lindex [split $arg] 3]
+if {$mychan_use == "1"} {
+	set why [lindex [split $arg] 1]
+	set user [lindex [split $arg] 2]
+}
+	private:process $nick "prv" $hand $chan $chan1 $why $user $type
+	}
+}
+
+myset {
+	foreach c [channels] {
+if {[matchattr $hand nmo|AOMV $c]} {
+	set chan $c
+	}
+}
+
+if {[regexp {^[&#]} $chan] && [validuser $hand]} {
+	set type 2
+	set chan1 "$chan"	
+	set flags [lindex [split $arg] 1]
+	set typez [lindex [split $arg] 2]
+	set chan2 [lindex [split $arg] 3]
+	set arg [join [lrange [split $arg] 2 end]]
+	myset:process $nick "prv" $hand $chan $chan1 $flags $typez $type $chan2 $arg
+	}
+}
+
+uptime {
+if {[matchattr $hand nmo]} {
+	set cmd_status [btcmd:status $chan $hand "uptime" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+	set getlang [string tolower [getuser $hand XTRA OUTPUT_LANG]]
+if {[matchattr $hand q]} { blacktools:tell $nick "prv" $hand $chan $chan1 gl.glsuspend none
+	return
+}
+if {[matchattr $hand -|q $chan]} { blacktools:tell $nick "prv" $hand $chan $chan1 gl.suspend none
+	return
+}
+if {$getlang == ""} { set getlang "[string tolower $black(default_lang)]" }
+	set chan1 "$chan"
+	set up [return_time_2 $getlang [expr [unixtime] - $uptime]]
+	set on [return_time_2 $getlang [expr [unixtime] - ${server-online}]]
+	catch {exec uptime} shelluptime
+	set file [open $black(uptime_file) "r"]
+	set data [read -nonewline $file]
+	close $file
+if {$data == ""} {
+	set read_maxup "-"
+	set read_maxon "-"
+} else {
+	set read_maxup [return_time_2 $getlang [lindex [split $data] 0]]
+	set read_maxon [return_time_2 $getlang [lindex [split $data] 1]]
+}
+	blacktools:tell $nick "prv" $hand $chan $chan1 maxup.1 "$up $read_maxup"
+	blacktools:tell $nick "prv" $hand $chan $chan1 maxon.1 "$on $read_maxon"
+	blacktools:tell $nick "prv" $hand $chan $chan1 uptime.2 $shelluptime
+	blacktools:tell $nick "prv" $hand $chan $chan1 uptime.3 $server
+	}
+}
+
+status {
+if {[matchattr $hand nmo]} {
+	status:process $nick "prv" $hand $chan
+	}
+}
+
+t {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set topics [join [lrange [split $arg] 2 end]]
+if {$mychan_use == "1"} {
+	set topics [join [lrange [split $arg] 1 end]]
+}
+	set type 2
+	set chan1 "$chan"
+	t:process $nick "prv" $hand $chan $chan1 $topics $type
+	}
+}
+
+tcl {
+if {[matchattr $hand n]} {
+	set type 2
+	set chan1 "$chan"
+	set the_script [lindex [split $arg] 2]
+	set who [lindex [split $arg] 1]
+	tcl:process $nick "prv" $hand $chan $chan1 $type $the_script $who
+	}
+}
+
+anunt {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 2
+	set chan1 "$chan"
+	set who [lindex [split $arg] 2]
+	set message [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {$mychan_use == "1"} {
+	set who [lindex [split $arg] 1]
+	set message [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+}
+	anunt:process $nick "prv" $hand $chan $chan1 $who $message $number $type
+	}
+}
+
+h {
+if {[matchattr $hand nmo|MOAV $chan]} {
+	set chan1 "$chan"
+	set type 2
+	set command [lindex [split $arg] 1]
+if {[regexp {^[&#]} $command]} {
+	set chan $command
+	set command [lindex [split $arg] 2]
+}
+	h:process $nick "prv" $hand $chan $chan1 $command $type
+	}
+}
+
+cp {
+if {[matchattr $hand nm]} {
+	set type 2
+	set chan1 $chan
+	set what [lindex [split $arg] 1]
+	set from [lindex [split $arg] 2]
+	set to [lindex [split $arg] 3]
+	cp:process $nick "prv" $hand $chan $chan1 $type $what $from $to
+	}
+}
+
+troll {
+if {[matchattr $hand nmo|AOM $chan]} {
+	set tr [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set tr [lindex [split $arg] 1]
+}
+	set chan1 "$chan"
+	set type 2
+	userhost:act $tr $nick $hand "prv" $chan $chan1 $type "1440" "troll" "" "0"
+	}
+}
+
+limit {
+if {[matchattr $hand nmo|M $chan]} {
+	set why [lindex [split $arg] 1]
+	set lm [lindex [split $arg] 2]
+	set type 2
+	set chan1 "$chan"
+if {[regexp {^[&#]} $why] && [matchattr $hand nmo|M $why]} {
+	set chan "$why"
+	set why [lindex [split $arg] 2]
+	set lm [lindex [split $arg] 3]
+		}
+	limit:process $nick "prv" $hand $chan $chan1 $why $lm $type
+	}
+}
+
+bt {
+if {[matchattr $hand nm]} {
+	set chan1 "$chan"
+	set type 2
+	set who [lindex [split $arg] 1]
+	set message [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+	broadcast:process $nick "prv" $hand $chan $chan1 $who $message $number $type
+	}
+}
+
+us {
+if {[matchattr $hand nmo|MA $chan]} {
+	set type 2
+	set chan1 "$chan"
+	set users [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set users [lindex [split $arg] 1]
+}
+	us:process $nick "prv" $hand $chan $chan1 $users $type
+	}
+}
+
+s {
+if {[matchattr $hand nmo|MA $chan]} {
+	set type 2
+	set chan1 "$chan"
+	set user [lindex [split $arg] 2]
+	set suspend_time [lindex [split $arg] 3]
+	set suspend_reason [join [lrange [split $arg] 4 end]]
+if {$mychan_use == "1"} {
+	set user [lindex [split $arg] 1]
+	set suspend_time [lindex [split $arg] 2]
+	set suspend_reason [join [lrange [split $arg] 3 end]]
+}
+if {![regexp {^[0-9]} $suspend_time]} {
+	set suspend_reason [join [lrange [split $arg] 3 end]]
+if {$mychan_use == "1"} {
+	set suspend_reason [join [lrange [split $arg] 2 end]]
+			}
+		}
+	s:process $nick "prv" $hand $chan $chan1 $user $type $suspend_time $suspend_reason
+	}
+}
+
+guestnick {
+if {[matchattr $hand nmo|M $chan]} {
+	set who [lindex [split $arg] 2]
+	set modul "guestnick"
+	set type 2
+	set chan1 $chan
+	set gnick [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {$mychan_use == "1"} {
+	set who [lindex [split $arg] 1]
+	set gnick [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+}
+	guestnick:process $nick "prv" $hand $chan $chan1 $who $gnick $type $number $modul
+	}
+}
+
+badhost {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 2
+	set chan1 "$chan"
+	set why [lindex [split $arg] 2]
+	set badh [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {$mychan_use == "1"} {
+	set why [lindex [split $arg] 1]
+	set badh [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+}
+	prot:module:process $nick "prv" $hand $chan $chan1 $why $badh $type $number "badhost"
+	}
+}
+
+badrealname {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 2
+	set chan1 "$chan"
+	set why [lindex [split $arg] 2]
+	set badf [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {$mychan_use == "1"} {
+	set why [lindex [split $arg] 1]
+	set badf [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+}
+	prot:module:process $nick "prv" $hand $chan $chan1 $why $badf $type $number "badrealname"
+	}
+}
+
+badquitpart {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 2
+	set chan1 "$chan"
+	set why [lindex [split $arg] 2]
+	set badq [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {$mychan_use == "1"} {
+	set why [lindex [split $arg] 1]
+	set badq [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+}
+	prot:module:process $nick "prv" $hand $chan $chan1 $why $badq $type $number "badquitpart"
+	}
+}
+
+badident {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 2
+	set chan1 "$chan"
+	set why [lindex [split $arg] 2]
+	set badi [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {$mychan_use == "1"} {
+	set why [lindex [split $arg] 1]
+	set badi [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+}
+	prot:module:process $nick "prv" $hand $chan $chan1 $why $badi $type $number "badident"
+	}
+}
+
+badnick {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 2
+	set chan1 "$chan"
+	set why [lindex [split $arg] 2]
+	set badn [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {$mychan_use == "1"} {
+	set why [lindex [split $arg] 1]
+	set badn [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+}
+	prot:module:process $nick "prv" $hand $chan $chan1 $why $badn $type $number "badnick"
+	}
+}
+
+badword {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 2
+	set chan1 "$chan"
+	set why [lindex [split $arg] 2]
+	set badw [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {$mychan_use == "1"} {
+	set why [lindex [split $arg] 1]
+	set badw [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+}
+	prot:module:process $nick "prv" $hand $chan $chan1 $why $badw $type $number "badword"
+	}
+}
+
+info {
+if {[matchattr $hand nmo|MAOV $chan]} {
+	set user [lindex [split $arg] 2]
+	set infouser [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set user [lindex [split $arg] 1]
+	set infouser [lindex [split $arg] 1]
+}
+if {![regexp {^[&#]} $chan]} {
+	set user $chan
+	}
+	set type 2
+	set chan1 "$chan"
+if {[regexp {^[&#]} $chan] && [matchattr $hand nmo|MAO $chan] && ($infouser == "")} {
+	info:process:chan $nick "prv" $hand $chan $chan1
+	return
+		}
+	info:process $nick "prv" $hand $chan $chan1 $user $type
+	}
+}
+
+antipub {
+if {[matchattr $hand nmo|M $chan]} {
+	set type 2
+	set chan1 "$chan"
+	set why [lindex [split $arg] 2]
+	set except [join [lrange [split $arg] 3 end]]
+	set number [lindex [split $arg] 3]
+if {$mychan_use == "1"} {
+	set why [lindex [split $arg] 1]
+	set except [join [lrange [split $arg] 2 end]]
+	set number [lindex [split $arg] 2]
+}
+	prot:module:process $nick "prv" $hand $chan $chan1 $why $except $type $number "antipub"
+	}
+}
+
+
+badchan {
+if {[matchattr $hand nmo|M $chan]} {
+	set why [lindex [split $arg] 2]
+	set type1 2
+	set chan1 "$chan"
+	set bdchan [lindex [split $arg] 3]
+	set type [lindex [split $arg] 4]
+	set reason [join [lrange [split $arg] 4 end]]
+if {[string equal -nocase $type "global"]} {
+	set reason [join [lrange [split $arg] 5 end]]
+	}
+if {$mychan_use == "1"} {
+	set why [lindex [split $arg] 1]
+	set bdchan [lindex [split $arg] 2]
+	set type [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 3 end]]
+if {[string equal -nocase $type "global"]} {
+	set reason [join [lrange [split $arg] 4 end]]
+	}
+}
+if {![regexp {^[&#]} $chan] && [matchattr $hand nmo]} {
+	set why $chan
+	set bdchan [lindex [split $arg] 2]
+	set type [lindex [split $arg] 3]
+	set reason [join [lrange [split $arg] 3 end]]
+if {[string equal -nocase $type "global"]} {
+	set reason [join [lrange [split $arg] 4 end]]
+	}
+if {$mychan_use == "1"} {
+	set bdchan [lindex [split $arg] 1]
+	set type [lindex [split $arg] 2]
+	set reason [join [lrange [split $arg] 2 end]]
+if {[string equal -nocase $type "global"]} {
+	set reason [join [lrange [split $arg] 3 end]]
+		}
+	}
+}
+	badchan:process $nick "prv" $hand $chan $chan1 $why $bdchan $type1 $type $reason
+	}
+}
+
+unset {
+if {[matchattr $hand nmo|M $chan]} {
+	set setting [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set setting [lindex [split $arg] 1]
+}
+	set chan1 $chan
+	set type 2
+if {[string equal -nocase $setting "global"] && [matchattr $hand nm]} {
+	set setting [lindex [split $arg] 2]
+foreach c [channels] {
+	unset:process $nick "prv" $hand $c $chan1 $setting $type
+			}
+		return
+	}
+	unset:process $nick "prv" $hand $chan $chan1 $setting $type
+	}
+}
+
+greet {
+if {[matchattr $hand nmo|M $chan]} {
+	set who [lindex [split $arg] 2]
+	set modul "greet"
+	set type 2
+	set chan1 $chan
+	set greet [join [lrange [split $arg] 3 end]]
+if {$mychan_use == "1"} {
+	set who [lindex [split $arg] 1]
+	set greet [join [lrange [split $arg] 2 end]]
+}
+	othermodule:process $nick "prv" $hand $chan $chan1 $who $greet $type $modul	
+	}
+}
+
+leave {
+if {[matchattr $hand nmo|M $chan]} {
+	set who [lindex [split $arg] 2]
+	set modul "leave"
+	set type 2
+	set chan1 $chan
+	set leave [join [lrange [split $arg] 3 end]]
+if {$mychan_use == "1"} {
+	set who [lindex [split $arg] 1]
+	set leave [join [lrange [split $arg] 2 end]]
+}
+	othermodule:process $nick "prv" $hand $chan $chan1 $who $leave $type $modul		
+	}
+}
+
+topic {
+if {[matchattr $hand nmo|M $chan]} {
+	set who [lindex [split $arg] 2]
+	set modul "topic"
+	set type 2
+	set chan1 $chan
+	set topic [join [lrange [split $arg] 3 end]]
+if {$mychan_use == "1"} {
+	set who [lindex [split $arg] 1]
+	set topic [join [lrange [split $arg] 2 end]]
+}
+	othermodule:process $nick "prv" $hand $chan $chan1 $who $topic $type $modul	
+	}
+}
+
+vr {
+if {[matchattr $hand nmo|OMA $chan]} {
+	set vr [lindex [split $arg] 2]
+	set chan1 "$chan"
+	set type 2
+if {$mychan_use == "1"} {
+	set vr [lindex [split $arg] 1]
+}
+	userhost:act $vr $nick $hand "prv" $chan $chan1 $type $black(vr:bantime) "vr" "" "0"
+	}
+}
+
+timer {
+if {[matchattr $hand nm]} {
+	set chan1 $chan
+	set cmd [lindex [split $arg] 1]
+	set pid [lindex [split $arg] 2]
+	set timer_args [join [lrange [split $arg] 4 end]]
+	set type 2
+	timer:process $nick "prv" $hand $chan $chan1 $cmd $pid $timer_args $type
+	}
+}
+
+i {
+if {[matchattr $hand nmo|VAOM $chan]} {
+	set type 2
+	set chan1 "$chan"
+	set inick [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set inick [lindex [split $arg] 1]
+}
+if {[regexp {^[&#]} $inick] && [matchattr $hand nmo|VAOM $inick]} {
+	set chan "$inick"
+	set inick [lindex [split $arg] 3]
+}
+	i:process $nick "prv" $hand $chan $chan1 $inick $type
+	}
+}
+
+next {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set option [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set option [lindex [split $arg] 1]
+}
+	set chan1 $chan
+		nextpublic:process $nick "prv" $hand $chan $chan1 $option
+	}
+}
+
+helped {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set user [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set user [lindex [split $arg] 1]
+}
+	set chan1 $chan
+	set type 1
+	helpedpublic:process $nick "prv" $hand $chan $chan1 $user $type
+	}
+}
+
+noidle {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set user [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set user [lindex [split $arg] 1]
+}
+	set chan1 $chan
+	set type 2
+	noidlepublic:process $nick "prv" $hand $chan $chan1 $user $type
+	}
+}
+
+skip {
+if {[matchattr $hand nmo|MAO $chan]} {
+	set user [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set user [lindex [split $arg] 1]
+}
+	set chan1 $chan
+	set type 2
+	skippublic:process $nick "prv" $hand $chan $chan1 $user	$type
+				}
+			}		
+
+stats {
+if {[matchattr $hand nmo|MA $chan]} {
+	set type 2
+	set chan1 "$chan"
+	set user [lindex [split $arg] 2]
+	set option [lindex [split $arg] 3]
+if {$mychan_use == "1"} {
+	set user [lindex [split $arg] 1]
+	set option [lindex [split $arg] 2]
+		}
+	stats:process $nick "prv" $hand $chan $chan1 $user $option $type
+	}
+}
+topwords {
+if {[matchattr $hand nmo|AOMV $chan]} {
+	set chan1 "$chan"
+	set cmd ""
+	set type 1
+	set next [lindex [split $arg] 2]
+if {$mychan_use == "1"} {
+	set next [lindex [split $arg] 1]
+	switch $next {
+reset {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 2]
+	set cmd "reset"
+		}	
+	}
+total {
+	set next [lindex [split $arg] 2]
+	set cmd "total"
+	}
+week {
+	set next [lindex [split $arg] 2]
+	set cmd "week"
+	}
+add {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 2]
+	set cmd "add"
+	}
+}	
+del {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 2]
+	set cmd "del"
+		}	
+	}
+list {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 2]
+	set cmd "list"
+	}	
+}
+default {
+if {[matchattr $hand nmo|MAOV $next]} {
+if {$next != "" && ![string equal -nocase $next "-next"]} {
+	set cmd $next
+	set next [lindex [split $arg] 2]
+	switch $next {
+	total {
+	set cmd "total:$cmd"
+	}
+	week {
+	set cmd "week:$cmd"
+	}
+	reset {
+	set cmd "reset:$cmd"
+					}
+	default {
+	set cmd "user:$cmd"
+						}
+					}
+				}
+			}
+		}
+	}
+}
+if {$cmd == ""} {
+	switch $next {
+reset {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 3]
+	set cmd "reset"
+		}	
+	}
+total {
+	set next [lindex [split $arg] 3]
+	set cmd "total"
+	}
+week {
+	set next [lindex [split $arg] 3]
+	set cmd "week"
+	}
+add {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 3]
+	set cmd "add"
+	}
+}	
+del {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 3]
+	set cmd "del"
+		}	
+	}
+list {
+if {[matchattr $hand nmo|M $chan]} {
+	set next [lindex [split $arg] 3]
+	set cmd "list"
+	}	
+}
+default {
+if {$next != "" && ![string equal -nocase $next "-next"]} {
+if {[matchattr $hand nmo|MAOV $next]} {
+	set cmd $next
+	switch $next {
+	total {
+	set cmd "total:$cmd"
+	}
+	week {
+	set cmd "week:$cmd"
+	}
+	reset {
+	set cmd "reset:$cmd"
+					}
+	default {
+	set cmd "user:$cmd"
+						}
+					}
+				}
+			}
+		}
+	}
+}
+	topwords:process $nick "prv" $hand $chan $chan1 $cmd $type $next
+	}	
+}
+
+ignore {
+if {[matchattr $hand nmo|M $chan]} {
+	set chan1 "$chan"
+	set type 2
+	set what [lindex [split $arg] 1]
+	set mask [lindex [split $arg] 2]
+	set time [lindex [split $arg] 3]	
+	set reason [join [lrange [split $arg] 4 end]]
+if {![regexp {^[0-9]} $time]} {
+	set reason [join [lrange [split $arg] 3 end]]
+}
+	ignore:process $nick "prv" $hand $chan $chan1 $what $mask $time $reason $type
+			}
+		}
+chat {
+if {[matchattr $hand nm]} {
+	set cmd_status [btcmd:status $chan $hand "chat" 0]
+if {$cmd_status == "1"} { 
+	return 
+}
+if {[matchattr $hand q]} { blacktools:tell $nick $host $hand $chan $chan1 gl.glsuspend none
+	return
+}
+	set chan1 $chan
+	*ctcp:CHAT $nick $host $hand $botnick CHAT $arg
+	blacktools:tell $nick "prv" $hand $chan $chan1 chat.1 none
+			} 
+		}
+hello {
+if {![file exists $userfile]} {
+	blacktools:hello $nick $host $hand
+			}
+		}
+pass {
+if {[validuser $hand]} {
+	set pass [lindex [split $arg] 1]
+if {$pass == ""} {
+	return
+}
+if {[getuser $hand pass] != ""} {
+	return
+}
+	setuser $hand PASS $pass
+	blacktools:tell $nick "prv" $hand "" "" pass.1 $pass
+			}
+		}
+	}
+}
+
+##############
+#########################################################################
+##   END                                                               ##
+#########################################################################