namespace eval randtopic {
# файл с текстом, откуда брать случайную строчку для топика
variable file "file.txt"
# канал, в котором будет вестись смена топика
variable channel "#suntar"
if {![file readable $file]} {
set f [open $file w+]
close $f
}
bind time - {* * * * *} [namespace current]::change
proc change {mins hours days months years} {
variable file
variable channel
# проверяем время (300 секунд это 5 минуты)
# следующая строчка делит без остатка текущее значение минут,
# которое передается в процедуру по бинду. если остаток ноль,
# значит минуты равны 0, 10, 20 и т.д.
if {[expr $mins % 180] == "0"} {
set data [::egglib::readdata "$file"]
if {[isnumber [lindex $data 0]]} {
set data2 [lrange $data 1 end]
putserv "TOPIC $channel :[lindex $data2 [lindex $data 0]]"
set counter [expr [lindex $data 0] + 1]
if {$counter >= [llength $data2]} {
set counter 0
}
set data2 [linsert $data2 0 $counter]
::egglib::writedata "$file" $data2
} else {
putserv "TOPIC $channel :[lindex $data 0]"
set data [linsert $data 0 "1"]
::egglib::writedata "$file" $data
}
}
}
putlog "randtopic.tcl loaded"
}