set mins 10
set actchan #vasya
set file "scripts/mail.txt"
set smsnick Vasya
foreach tms "[timers]" {
if {([llength $tms] != 0)} {
set tmc [lindex $tms 1]
set tid [lindex $tms 2]
if {($tmc == "check")} {
killtimer $tid
}
}
}
proc check { } {
global file actchan smsnick
## Обьявляем переменные, заданные выше, как глобальные
set pipefile [open $file]
## Открываем канал, несущий в себе связь с файлом (хранящим email)
while { [gets $pipefile sms] >=0 } {
## Пока возможно считывание
if {($sms != "empty")} {
## Если сообщение НЕ равно "empty"
set arg1 [lindex $sms 0]
set maybe [lindex $sms 1]
## Установим переменные: arg1 - слово IRC, maybe - возможное действие на СМС (установка топика, если SMS состоит из первых слов "IRC topic", иначе - вывод простым текстом)
if {($maybe == "topic")} {
set irc [lrange $sms 2 end]
set predtopic [topic $actchan]
## Если есть слово topic - выделяем предыдущий топик канала и текст SMS (переменная irc)
if {([llength $predtopic] <= 100)} {
putserv "topic $actchan :$predtopic // $irc // Sms from $smsnick //"
## Если топик не слишком длинный - сохраняем старый и дописываем текст SMS в топик
} else {
putserv "topic $actchan :$irc // $irc // Sms from $smsnick //"
## Иначе создаем новый топик канала
}
} else {
set irc [lrange $sms 1 end]
putmsg $actchan "$irc // Sms from $smsnick //"
## Если в SMS нет слова topic - выдаем простым текстом
}
}
}
close $pipefile
## Закрываем связь с файлом
set tempfile [open $file w]
puts $tempfile "empty"
close $tempfile
## Открываем связь с файлом (но уже для записи), пишем в файл строку "empty" и закрываем его - для того, чтобы скрипт дважды не скидывал в IRC одно и тоже сообщение
timer mins check
## Создаем таймер на указанный интервал со ссылкой на процедуру check
}
check
## При запуске скрипта - сразу же выполним процедуру