namespace eval ::fm { bind pub - !fm ::fm::radiolist bind pub - !фм ::fm::radiolist setudef flag fm variable radiolist [list {66.0 Love Radio (УКВ)} {66.4 Радио России (УКВ)} {66.8 Добрые песни} {67.2 Маяк} {68.0 Авторадио (УКВ)} \ {68.3 Радио-1} {68.8 Юность (УКВ} {69.2 Русские новости (УКВ)} {69.8 Европа плюс (УКВ)} {70.19 Ультра} {70.8 Радио России Москва} \ {71.3 Русское Радио (УКВ)} {72.2 Орфей} {73.4 7 на 7 холмах (УКВ)} {73.8 Эхо Москвы (УКВ)} {87.5 Бизнес FM} {87.9 Сити FM} \ {88.3 Ретро FM} {88.7 Юмор FM} {89.1 Джаз} {89.5 Мегаполис} {89.9 Кекс FM} {90.3 Авторадио} {90.8 Relax FM} {91.2 Эхо Москвы} \ {91.6 Радио России} {92.0 Говорит Москва} {92.8 Карнавал} {93.2 Спорт FM} {93.6 NewTone FM} {94.0 Pioneer FM} {94.8 Моя Семья} \ {95.2 Большое радио} {95.6 Звезда} {96.4 X-FM} {96.8 Детское Радио} {97.2 Комсомольская правда} {97.6 Вести FM} {98.0 Кино FM} {98.4 Fresh FM} {98.8 Алла} \ {99.2 Орфей} {99.5 Семейное Радио} {100.1 Серебряный Дождь} {100.5 Best FM} {100.9 Классик} {101.2 Динамит} {101.7 Наше Радио} \ {102.1 Monte-Carlo} {102.5 Попса} {103.0 Шансон} {103.4 Маяк 24} {103.7 Максимум} {104.2 Энергия} {104.7 7 на 7 Холмах} {105.2 Next} \ {105.7 Русское Радио} {106.2 Европа Плюс} {106.6 Love Radio} {107.0 Русские Новости} {107.4 Хит FM} {107.8 Милицейская Волна}] variable radioscale "{} {\0030964\003} [lrepeat 7 "\00307-\003"] {\0030968\003} [lrepeat 7 "\00307-\003"] {\0030974\003} [lrepeat 7 "\00307-\003"] {\0030980\003} [lrepeat 7 "\00307-\003"] {\0030992\003} [lrepeat 7 "\00307-\003"] {\00309100\003} [lrepeat 7 "\00307-\003"] {\00309108\003}" proc radiolist {nick uhost hand chan text} { variable radioscale if {![channel get $chan fm]} {return} if {$text eq ""} {putserv "PRIVMSG $chan :$nick, используй !fm \[-номер\] <частота/название станции> - что за радиостанция вещает на указанной частоте (эфир Моск. обл. от 07.03.2010)."; return} if {[regexp -- {^-?(\d+)\s} $text -> num]} {regsub -- "-?$num " $text "" text} {set num 1} set num [scan $num %d] if {$num eq 0} {set num 1} set text [string trim $text] if {[checkradio $text] eq "0" || [checkradio $text] eq ""} { putserv "PRIVMSG $chan :$nick, ничего не найдено." } else { set out [checkradio $text] set total [llength $out] if {$total > 1} { if {$num > $total} {set num 1} set out_ [lindex $out [expr $num - 1]] set freq [lindex $out_ 0] set station [lindex $out_ 1] set pos [expr round((100-(108.0-$freq)/0.5)/2)-1] if {$pos < 0} {set pos 0} putserv "PRIVMSG $chan :\[$num\/$total\] :: [join [lreplace $radioscale $pos $pos "\00304,04|\003"] ""] \002::\002 \00312$freq MHz \00314\(\00306$station\00314\)\003" } else { set out_ [lindex $out 0] set freq [lindex $out_ 0] set station [lindex $out_ 1] set pos [expr round((100-(108.0-$freq)/0.5)/2)-1] if {$pos < 0} {set pos 0} putserv "PRIVMSG $chan :[join [lreplace $radioscale $pos $pos "\00304,04|\003"] ""] \002::\002 \00312$freq MHz \00314\(\00306$station\00314\)\003" } } } proc checkradio {text} { variable radiolist set out [list] foreach radio $radiolist { if {[string match -nocase "*$text*" [join $radio]]} { lappend out [list [lindex $radio 0] [lrange $radio 1 end]] } } if {![llength $out]} {return 0} return $out } putlog "fm.tcl loaded" }