#################################################### # WindropClan @ http://windrop.clan.su # Автор: Vladislav # Версия: 1.2 # Описание: Вывода анекдотов с www.anekdot.ru # Команда: !анек # Для автовывода используйте команду: !set +auto-anek #################################################### namespace eval anek { setudef flag no[namespace tail [namespace current]] setudef flag auto-[namespace tail [namespace current]] # Автовывод анекдотов в минутах: variable autotime 15 # Антифлуд в секундах: variable timer 10 # [1/0] Разрешить работу в привате: variable pbind 1 # Эти параметры не менять: variable clock 0 variable auto foreach bind {anek anekdot анек анекдот} {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} if {[expr [clock seconds]-$clock] < $timer} {putserv "[expr {$nick == $chan ? "PRIVMSG":"NOTICE"}] $nick :Команда недавно запрашивалась. Повтори попытку через [expr $timer-([clock seconds]-$clock)] сек."; return}; set clock [clock seconds] set data [data $chan $nick 0]; if {$data == 0} {return} elseif {$data == 1} {putserv "[expr {$nick == $chan ? "PRIVMSG":"NOTICE"}] $nick :Анекдот не найден."; return} out $chan $data } proc data {chan nick auto} { ::http::config -urlencoding utf-8 -useragent "Opera/9.52 (Windows NT 5.1; ru)" if {[catch {set parsing [::http::geturl http://pda.anekdot.ru -binary true -timeout 10000]} error]} {if {$auto == 0} {putserv "[expr {$nick == $chan ? "PRIVMSG":"NOTICE"}] $nick :Ошибка: $error"}; return 0} elseif {[http::ncode $parsing] == "404"} {if {$auto == 0} {putserv "[expr {$nick == $chan ? "PRIVMSG":"NOTICE"}] $nick :Ошибка: [http::code $parsing]"}} 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"} {if {$auto == 0} {putserv "[expr {$nick == $chan ? "PRIVMSG":"NOTICE"}] $nick :Таймаут соединения."}} elseif {[http::status $parsing] == "error"} {if {$auto == 0} {putserv "[expr {$nick == $chan ? "PRIVMSG":"NOTICE"}] $nick :Ошибка: [http::error $parsing]"}} ::http::cleanup $parsing; if {![info exists data]} {return 0} set ndata [list]; if {[regexp -nocase -- {.*?Случайный анекдот.*?
(.*?)
} $data -> data]} { foreach _ [split [webstrip [string map {"