И таки пришлось немного видоизменить код. Выдавал очень странно на канал:
[00:21:01] <@Vesemir> Сегодня 26 марта 1975 год: в Лондоне состоялась премьера фильма Tommy группы The Who
[00:25:00] <@Vesemir> Сегодня 26 марта 1976 года группа Wings выпускает альбом Wings At The Speed Of Sound
[00:48:01] <@Vesemir> Сегодня 26 марта 1975 год: в Лондоне состоялась премьера фильма Tommy группы The Who
[00:51:00] <@Vesemir> Сегодня 26 марта 1948 года родился Ричард Тэнди, бас-гитарист группы ELO
[00:55:00] <@Vesemir> Сегодня 25 марта 1949 года родился Ник Лоу, английский певец, композитор, бас-гитарист, продюсер
Интервал в параметре set hol(mins) был равен 30, но непонятно зачем отдавать два раза через 4 минуты и как от этого избавится - пробовал разные интервалы - итория та же.
Теперь все работает как надо:
# Настройки
################################
set reader(timer) "3600"
set reader(base) "scripts/datreader.txt"
set reader(color1) "14"
set reader(color2) "5"
set reader(chan) "#chan"
# Код ниже этой линии
#################################
if {[lsearch -glob [utimers] "* reader *"] == -1} { utimer $reader(timer) reader }
proc reader {} {
global reader
set fo [open $reader(base) "r"]
while {[gets $fo line] >= "0"} {
set utime [ctime [unixtime]]
if {([lindex $line 0] == [lindex $utime 2]) && ([lindex $line 1] == [lindex $utime 1])} {
lappend today $line
}
}
close $fo
if {[info exists today] && $today != ""} {
set randline [lindex $today [rand [llength $today]]]
putserv "PRIVMSG $reader(chan) :\003$reader(color1)Сегодня\003 \003$reader(color2)[lreplace $randline 0 1]\003"
}
if {[lsearch -glob [utimers] "* reader *"] == -1} { utimer $::reader(timer) reader}
}
[12:20:47] <@Vesemir> Сегодня (25 марта 1951 года), родился Боб Пеландер, клавишник и вокалист Michael Stanley Band
[13:20:47] <@Vesemir> Сегодня (25 марта 1962 год), альбом Тома Джонса под названием She's a Lady стал «золотым»
Еще раз огромное спасибо за участие!