namespace eval cwer { package require http 2.7 variable version "1.4" variable timeout "30" variable starturl "http://www.cwer.ru" bind pub - !cwer [namespace current]::pub bind pub - !цвер [namespace current]::pub bind msg - !cwer [namespace current]::msg bind msg - !цвер [namespace current]::msg variable chflag [namespace tail [namespace current]] setudef flag $chflag proc msg {nick uhost hand text} { pub $nick $uhost $hand $nick $text } proc pub {nick uhost hand chan text} { variable chflag variable starturl variable timeout if {$nick ne $chan && ![channel get $chan $chflag]} {return} if {[string is space $text]} { puthelp "PRIVMSG $chan :$nick: $::lastbind \<запрос\> - поиск на сайте cwer.ru" return } if {[regexp -- {^-(\d+)} $text -> num]} {regsub -- "-$num" $text "" text} {set num 1} set num [scan $num %d] if {$num eq 0} {set num 1} set pos $num if {$num > 20} { set page [expr round((($num - 1)/20)+1)] set num [expr $num - 20 * ($page - 1)] set page "&page=$page" } else { set page "" } set text [string trim [stripcodes bcruag [string map {\017 ""} $text]]] putlog "::[namespace current]:: $nick/$chan ($uhost) -> $text" ::http::config \ -urlencoding utf-8 \ -useragent {Opera/9.64 (Windows NT 5.1; U; ru) Presto/2.1.1} if {[catch { set token [::http::geturl "${starturl}/sphinx/?s=[::http::formatQuery $text]$page" \ -method GET \ -timeout [expr $timeout*1000] \ -command [list [namespace current]::data $nick $chan $num $pos]] } err]} { puthelp "PRIVMSG $chan :$nick: Не удалось соединиться с сервисом. Повторите попытку позже." return } } proc data {nick chan num pos token} { variable starturl set status [::http::status $token] set code [::http::ncode $token] if {$status ne "ok" || $code ne "200"} { ::http::cleanup $token puthelp "PRIVMSG $chan :$nick: Ошибка получения информации." return 0 } set data [::http::data $token] ::http::cleanup $token regsub -all -- "\n|\r|\t" $data "" data if {[string match -nocase "*Новостей не обнаружено*" $data]} { puthelp "PRIVMSG $chan :\037Ничего не найдено\037." return } if {![regexp -nocase -- {