#################################################### # WindropClan @ http://windrop.clan.su # Автор: Vladislav # Версия: 1.0 # Описание: Расшифровка аббревиатур. # Команды: !сокр #################################################### namespace eval acro { setudef flag no[namespace tail [namespace current]] variable timer 10 variable pbind 1 variable clock 0 foreach bind {acro акро сокр} {bind pub - $::gprefix(1)$bind [namespace current]::pub; if {$pbind} {bind msg - $::gprefix(1)$bind [namespace current]::msg}} proc msg {nick host hand text} {pub $nick $host $hand $nick $text; return} proc pub {nick host hand chan text} { variable timer; variable clock if {$chan != $nick && [channel get $chan no[namespace tail [namespace current]]]} {return} else {set lastbind $::lastbind; set text [string trim [string map { {}} [stripcodes cubr $text]]]} if {![string is space [lindex $text 0]] && [string is digit [lindex $text 0]]} {set num [lindex $text 0]; if {$num == 0} {set num 1}; set text [join [lrange [split $text] 1 end]]} else {set num 1} if {[string is space $text]} {putserv "[expr {$nick == $chan ? "PRIVMSG":"NOTICE"}] $nick :Формат: $lastbind \[номер\] <сокращение> - расшифровка аббревиатур."; return} if {[expr [clock seconds]-$clock] < $timer} {putserv "[expr {$nick == $chan ? "PRIVMSG":"NOTICE"}] $nick :Команда недавно запрашивалась. Повтори попытку через [expr $timer-([clock seconds]-$clock)] сек."; return}; set clock [clock seconds] ::http::config -urlencoding utf-8 -useragent "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)" if {[regexp -nocase -- {[a-z]} $text]} {set url "http://acronyms.thefreedictionary.com/[http::formatQuery $text]"; set rej 0} else {set url "http://pda.sokr.ru/[http::formatQuery $text]/"; set rej 1} if {[catch {set parsing [::http::geturl $url -binary true -timeout 10000]} error]} {putserv "[expr {$nick == $chan ? "PRIVMSG":"NOTICE"}] $nick :Ошибка: $error"; return} elseif {[http::ncode $parsing] == "404"} {putserv "PRIVMSG $chan :Ничего не найдено."} elseif {[http::status $parsing] == "ok"} {set data [regsub -all -- {\n|\r|\t|\v} [encoding convertfrom utf-8 [::http::data $parsing]] ""]; regsub -all -- {\s+} $data " " data} elseif {[http::status $parsing] == "timeout"} {putserv "[expr {$nick == $chan ? "PRIVMSG":"NOTICE"}] $nick :Таймаут соединения."} elseif {[http::status $parsing] == "error"} {putserv "[expr {$nick == $chan ? "PRIVMSG":"NOTICE"}] $nick :Ошибка: [http::error $parsing]"} ::http::cleanup $parsing; if {![info exists data]} {return} else {set list [list]} if {$rej} { regsub -nocase -- {^.*?} $data ""; regsub -nocase -- {.*?$} $data "" foreach _ [split [string map { \n} $data] \n] { if {[regexp -nocase -- {(.*?).*?
(.*?)
.*?(.*?)
} $_ -> a b c]} { if {[regsub -all {<.*?>} $a ""] != "" && [regsub -all {<.*?>} $b ""] != ""} {lappend list [list [regsub -all {<.*?>} $a ""] [regsub -all {<.*?>} $b ""] [regsub -all {<.*?>} $c " "]]} } } } else { regsub -nocase -- {^.*?