|
@@ -1,314 +0,0 @@
|
|
|
-#########################################################################
|
|
|
|
|
-## BlackTools - The Ultimate Channel Control Script ##
|
|
|
|
|
-## One TCL. One smart Eggdrop ##
|
|
|
|
|
-#########################################################################
|
|
|
|
|
-######################## AUTOBROADCAST 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 broadcast:process {nick host hand chan chan1 who message number type} {
|
|
|
|
|
-global botnick black username
|
|
|
|
|
- set cmd_status [btcmd:status $chan $hand "bt" 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_message $message
|
|
|
|
|
- set btnum 0
|
|
|
|
|
- set lin 0
|
|
|
|
|
- set temp_num 0
|
|
|
|
|
- set sdir $black(status_file)
|
|
|
|
|
-if {$who == ""} {
|
|
|
|
|
-switch $type {
|
|
|
|
|
- 0 {
|
|
|
|
|
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "bt"
|
|
|
|
|
- }
|
|
|
|
|
- 1 {
|
|
|
|
|
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "bt"
|
|
|
|
|
- }
|
|
|
|
|
- 2 {
|
|
|
|
|
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "bt"
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- return
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-switch [string tolower $who] {
|
|
|
|
|
-
|
|
|
|
|
-on {
|
|
|
|
|
- blacktools:tell $nick $host $hand $chan $chan1 autobroadcast.4 none
|
|
|
|
|
- set type1 "broadcastpublic:show ON"
|
|
|
|
|
- set file [open $black(status_file) "r"]
|
|
|
|
|
- set timestamp [clock format [clock seconds] -format {%Y%m%d%H%M%S}]
|
|
|
|
|
- set temp "$black(tempdir)/bt_temp.$timestamp"
|
|
|
|
|
- set tempwrite [open $temp w]
|
|
|
|
|
-while {[gets $file line] != -1} {
|
|
|
|
|
- set who [lindex [split $line] 0]
|
|
|
|
|
- set stats [lindex [split $line] 1]]
|
|
|
|
|
-if {[string match -nocase "broadcastpublic:show" $who]} {
|
|
|
|
|
- continue
|
|
|
|
|
-} else {
|
|
|
|
|
- puts $tempwrite $line
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- close $tempwrite
|
|
|
|
|
- close $file
|
|
|
|
|
- file rename -force $temp $black(status_file)
|
|
|
|
|
-
|
|
|
|
|
- set file [open $black(status_file) "a"]
|
|
|
|
|
- puts $file "$type1"
|
|
|
|
|
- close $file
|
|
|
|
|
- set scan_time [time_return_minute $black(bttime)]
|
|
|
|
|
- set black(broadcast:timer_start) $scan_time
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-off {
|
|
|
|
|
- blacktools:tell $nick $host $hand $chan $chan1 autobroadcast.5 none
|
|
|
|
|
- set file [open $black(status_file) "r"]
|
|
|
|
|
- set timestamp [clock format [clock seconds] -format {%Y%m%d%H%M%S}]
|
|
|
|
|
- set temp "$black(tempdir)/bt_temp.$timestamp"
|
|
|
|
|
- set tempwrite [open $temp w]
|
|
|
|
|
-while {[gets $file line] != -1} {
|
|
|
|
|
- set who [lindex [split $line] 0]
|
|
|
|
|
- set stats [lindex [split $line] 1]]
|
|
|
|
|
-if {[string match -nocase "broadcastpublic:show" $who]} {
|
|
|
|
|
- continue
|
|
|
|
|
-} else {
|
|
|
|
|
- puts $tempwrite $line
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- close $tempwrite
|
|
|
|
|
- close $file
|
|
|
|
|
- file rename -force $temp $black(status_file)
|
|
|
|
|
-
|
|
|
|
|
-if {[info exists black(broadcast:timer_start)]} {
|
|
|
|
|
- unset black(broadcast:timer_start)
|
|
|
|
|
- }
|
|
|
|
|
-if {[info exists black(broadcast:counter)]} {
|
|
|
|
|
- unset black(broadcast:counter)
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-add {
|
|
|
|
|
-if {$message == ""} {
|
|
|
|
|
-switch $type {
|
|
|
|
|
- 0 {
|
|
|
|
|
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "bt"
|
|
|
|
|
- }
|
|
|
|
|
- 1 {
|
|
|
|
|
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "bt"
|
|
|
|
|
- }
|
|
|
|
|
- 2 {
|
|
|
|
|
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "bt"
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- return
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-while {$temp_num == 0} {
|
|
|
|
|
- set get [find:num $btnum "-" "AUTOBROADCAST"]
|
|
|
|
|
-if {$get == "$btnum"} {
|
|
|
|
|
- set btnum [expr $btnum + 1]
|
|
|
|
|
- } else { set temp_num 1 }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
- set file [open $black(add_file) a]
|
|
|
|
|
- set encoded [encoding convertto utf-8 $message]
|
|
|
|
|
- puts $file "- AUTOBROADCAST $btnum $encoded"
|
|
|
|
|
- close $file
|
|
|
|
|
- blacktools:tell $nick $host $hand $chan $chan1 autobroadcast.6 $btnum
|
|
|
|
|
- blacktools:tell $nick $host $hand $chan $chan1 autobroadcast.1 $show_message
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-list {
|
|
|
|
|
- array set btlist [list]
|
|
|
|
|
- set timestamp [clock format [clock seconds] -format {%Y%m%d%H%M%S}]
|
|
|
|
|
- set temp "$black(tempdir)/bt_temp.$timestamp"
|
|
|
|
|
- set file [open $black(add_file) r]
|
|
|
|
|
- set size [file size $black(add_file)]
|
|
|
|
|
- set data [split [read $file $size] \n]
|
|
|
|
|
- close $file
|
|
|
|
|
-if {$data == ""} { blacktools:tell $nick $host $hand $chan $chan1 autobroadcast.8 none
|
|
|
|
|
- return
|
|
|
|
|
-}
|
|
|
|
|
-foreach line $data {
|
|
|
|
|
- set read_type [lindex [split $line] 1]
|
|
|
|
|
-if {[string equal -nocase $read_type "AUTOBROADCAST"]} {
|
|
|
|
|
- set msg_num [lindex [split $line] 2]
|
|
|
|
|
- set message [join [lrange [split $line] 3 end]]
|
|
|
|
|
-lappend btlist($msg_num) $message
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
- set tempwrite [open $temp "w"]
|
|
|
|
|
-foreach msg [lsort -integer -increasing [array names btlist]] {
|
|
|
|
|
- puts $tempwrite "$msg [join $btlist($msg)]"
|
|
|
|
|
-}
|
|
|
|
|
- close $tempwrite
|
|
|
|
|
- set file [open $temp "r"]
|
|
|
|
|
- set w [read -nonewline $file]
|
|
|
|
|
- close $file
|
|
|
|
|
- set data [split $w "\n"]
|
|
|
|
|
- file delete $temp
|
|
|
|
|
- module:getinfo $nick $host $hand $chan $chan1 $type $data "autobroadcast" "0" $number
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-del {
|
|
|
|
|
-
|
|
|
|
|
-if {![regexp {^[0-9]} $number]} {
|
|
|
|
|
-switch $type {
|
|
|
|
|
- 0 {
|
|
|
|
|
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr "bt"
|
|
|
|
|
- }
|
|
|
|
|
- 1 {
|
|
|
|
|
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_nick "bt"
|
|
|
|
|
- }
|
|
|
|
|
- 2 {
|
|
|
|
|
- blacktools:tell $nick $host $hand $chan $chan1 gl.instr_priv "bt"
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- return
|
|
|
|
|
-}
|
|
|
|
|
- set ret [find:num $number "-" "AUTOBROADCAST"]
|
|
|
|
|
-if {$ret == 0} {
|
|
|
|
|
- blacktools:tell $nick $host $hand $chan $chan1 autobroadcast.2 $number
|
|
|
|
|
- return
|
|
|
|
|
-}
|
|
|
|
|
- set file [open $black(add_file) "r"]
|
|
|
|
|
- set timestamp [clock format [clock seconds] -format {%Y%m%d%H%M%S}]
|
|
|
|
|
- set temp "$black(tempdir)/bt_temp.$timestamp"
|
|
|
|
|
- set tempwrite [open $temp w]
|
|
|
|
|
-while {[gets $file line] != -1} {
|
|
|
|
|
- set read_num [lindex [split $line] 2]
|
|
|
|
|
- set read_type [lindex [split $line] 1]
|
|
|
|
|
-if {[string equal $number $read_num] && [string equal $read_type "AUTOBROADCAST"]} {
|
|
|
|
|
- continue
|
|
|
|
|
-} else {
|
|
|
|
|
- puts $tempwrite $line
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- close $tempwrite
|
|
|
|
|
- close $file
|
|
|
|
|
- file rename -force $temp $black(add_file)
|
|
|
|
|
- blacktools:tell $nick $host $hand $chan $chan1 autobroadcast.11 $number
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-proc broadcast:check {} {
|
|
|
|
|
- global black
|
|
|
|
|
- set file [open $black(status_file) r]
|
|
|
|
|
- set size [file size $black(status_file)]
|
|
|
|
|
- set data [split [read $file $size] \n]
|
|
|
|
|
- close $file
|
|
|
|
|
- set broadcast_act 0
|
|
|
|
|
-if {$data != ""} {
|
|
|
|
|
-foreach line $data {
|
|
|
|
|
- set type [lindex [split $line] 0]
|
|
|
|
|
- set stats [lindex [split $line] 1]
|
|
|
|
|
-if {[string equal -nocase $type "broadcastpublic:show"] && [string equal -nocase $stats "ON"]} {
|
|
|
|
|
- set broadcast_act 1
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- return $broadcast_act
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-proc broadcastpublic:show {} {
|
|
|
|
|
-global black
|
|
|
|
|
-if {![info exists black(broadcast:count)]} {
|
|
|
|
|
- set black(broadcast:count) 0
|
|
|
|
|
-}
|
|
|
|
|
- set channels ""
|
|
|
|
|
- set file [open $black(add_file) r]
|
|
|
|
|
- set size [file size $black(add_file)]
|
|
|
|
|
- set data [split [read $file $size] \n]
|
|
|
|
|
- close $file
|
|
|
|
|
- set timestamp [clock format [clock seconds] -format {%Y%m%d%H%M%S}]
|
|
|
|
|
- set temp "$black(tempdir)/bt_temp.$timestamp"
|
|
|
|
|
- set tempwrite [open $temp w]
|
|
|
|
|
-foreach line $data {
|
|
|
|
|
- set read_type [lindex [split $line] 1]
|
|
|
|
|
-if {[string equal $read_type "AUTOBROADCAST"]} {
|
|
|
|
|
- set read_message [lrange [split $line] 3 end]
|
|
|
|
|
- puts $tempwrite $read_message
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
- close $tempwrite
|
|
|
|
|
-
|
|
|
|
|
- set file [open $temp "r"]
|
|
|
|
|
- set w [read -nonewline $file]
|
|
|
|
|
- close $file
|
|
|
|
|
- set data [split $w "\n"]
|
|
|
|
|
-
|
|
|
|
|
-if {$data != ""} {
|
|
|
|
|
- set line [lindex $data $black(broadcast:count)]
|
|
|
|
|
-
|
|
|
|
|
-if {$line == ""} {
|
|
|
|
|
- set black(broadcast:count) 0
|
|
|
|
|
- set line [lindex $data $black(broadcast:count)]
|
|
|
|
|
-}
|
|
|
|
|
- set black(broadcast:count) [expr $black(broadcast:count) +1]
|
|
|
|
|
-
|
|
|
|
|
-foreach chan [channels] {
|
|
|
|
|
-if {[validchan $chan] && [isdynamic $chan] && (![setting:get $chan silent])} {
|
|
|
|
|
- lappend channels $chan
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- } else { file delete $temp }
|
|
|
|
|
- file delete $temp
|
|
|
|
|
-if {$channels != "" && $line != ""} {
|
|
|
|
|
- broadcast:act $channels 0 $line
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-proc broadcast:act {channels counter line} {
|
|
|
|
|
- global black
|
|
|
|
|
- set split_line [split $line "~"]
|
|
|
|
|
- set chan [lindex $channels $counter]
|
|
|
|
|
- set cc [expr $counter + 1]
|
|
|
|
|
- set notshow 0
|
|
|
|
|
-if {$chan != ""} {
|
|
|
|
|
-if {[info exists black(lastaction:$chan)]} {
|
|
|
|
|
- set unixtime [unixtime]
|
|
|
|
|
- set return_time [time_return_minute $black(bttime)]
|
|
|
|
|
- set time [expr [expr [expr $return_time * $black(entry:shown)] * 60] + $unixtime]
|
|
|
|
|
-if {[expr $unixtime - $black(lastaction:$chan)] > [expr $time - $unixtime]} {
|
|
|
|
|
- set notshow 1
|
|
|
|
|
- }
|
|
|
|
|
-} else { set notshow 1 }
|
|
|
|
|
-if {$notshow == "0"} {
|
|
|
|
|
-foreach mes $split_line {
|
|
|
|
|
- set message [join [lrange [split $mes] 0 end]]
|
|
|
|
|
- set encoded [encoding convertfrom utf-8 $message]
|
|
|
|
|
-if {$black(bthow) == "1"} {
|
|
|
|
|
- puthelp "PRIVMSG $chan :\001ACTION \[AUTO\] [join $encoded]\001"
|
|
|
|
|
-} else {
|
|
|
|
|
- puthelp "PRIVMSG $chan :\[AUTO\] [join $encoded]"
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-if {[lindex $channels $cc] == ""} {
|
|
|
|
|
- return
|
|
|
|
|
- } else {
|
|
|
|
|
- utimer 5 [list broadcast:act $channels $cc $line]
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-##############
|
|
|
|
|
-#########################################################################
|
|
|
|
|
-## END ##
|
|
|
|
|
-#########################################################################
|
|
|