### # # Название: taforisms.tcl # Версия: 1.0 # Автор: tvrsh # ### # # Описание: Скрипт забирает с сайта www.ac-soft.ru афоризмы, пословицы и поговорки. # ### # # Установка: # 1. Скопируйте скрипт taforisms.tcl в папку scripts вашего бота. # 2. В файле eggdrop.conf впишите строку source scripts/taforisms.tcl # 3. Сделайте .rehash боту. # ### # # Версион хистори: # # 1.0(18.12.2010) Первая паблик версия. # ### namespace eval taforisms { # Сбрасываем значения всех переменных. foreach p [array names taforisms *] { catch {unset taforisms($p) } } # Указываем канальный флаг(.chanset #chan +taforisms для включения скрипта). setudef flag taforisms ### ### # Меню настроек ниже этой линии: # # ______________________________ # ### ### variable taforisms array set taforisms { pref {!} binds {taforisms аф афоризм af aforism} msg 1 delay 30 color1 \00314 color2 \00303 color3 \00305 version "taforisms.tcl version 1.0" author "tvrsh" } ### ### # Ниже этой линии начинается код, не изменяйте его если не знаете TCL: # # ____________________________________________________________________ # ### ### # Обработка биндов. foreach bind [split $taforisms(binds) " "] { bind pub -|- "$taforisms(pref)$bind" ::taforisms::taforisms_pub if {$taforisms(msg) >= 1} { bind msg -|- "$taforisms(pref)$bind" ::taforisms::taforisms_msg } } # Процедура обработки приватных команд. proc ::taforisms::taforisms_msg {nick uhost hand text} { variable taforisms ::taforisms::taforisms_proc $nick $uhost $hand $nick } # Процедура обработки паблик команд. proc ::taforisms::taforisms_pub {nick uhost hand chan text} { variable taforisms # Проверяем наличие флага. if {![channel get $chan taforisms]} { return } ::taforisms::taforisms_proc $nick $uhost $hand $chan } # Процедура обработки запроса. proc ::taforisms::taforisms_proc {nick uhost hand chan} { variable taforisms if {[info exists taforisms(lasttime,$chan)] && [expr $taforisms(lasttime,$chan) + $taforisms(delay)] > [clock seconds]} { putserv "NOTICE $nick :$taforisms(color1)Запрос не чаще одного раза в $taforisms(color2)$taforisms(delay) $taforisms(color1)[lindex {. секунду секунды секунд} [taforisms_numgrp $taforisms(delay)]]." putserv "NOTICE $nick :$taforisms(color1)Подождите $taforisms(color3)[expr $taforisms(delay) - [expr [clock seconds] - $taforisms(lasttime,$chan)]] $taforisms(color1)[lindex {. секунду секунды секунд} [taforisms_numgrp [expr $taforisms(delay) - [expr [clock seconds] - $taforisms(lasttime,$chan)]]]] до следующего запроса." return 0 } set taforisms_tok [::http::config -useragent "Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)"] catch {set taforisms_tok [::http::geturl "http://www.ac-soft.ru/pub/aforisms/aforismjs1251.php" -timeout "20000"]} error if {[string match -nocase "*couldn't open socket*" $error]} { putserv "PRIVMSG $chan :$taforisms(color1)Ошибка: $taforisms(color2)\"Сouldn't open socket\"$taforisms(color1). Адрес $taforisms(color2)\"http://www.ac-soft.ru/pub/aforisms/aforismjs1251.php\" $taforisms(color1)не существует.\003" return 0 } if {[::http::status $taforisms_tok] == "timeout"} { putserv "PRIVMSG $chan :$taforisms(color1)Ошибка: $taforisms(color2)\"Сonnect timeout\"$taforisms(color1). Проверьте скорость соединения своего бота.\003" return 0 } set data [::http::data $taforisms_tok] ::http::cleanup $taforisms_tok putlog "\[taforisms\] $nick/$chan" regexp {document.write\(\"(.*?)\(} $data "" data regsub -all -nocase -- {} $data {} data regsub -all -nocase -- {} $data {} data regsub -all -nocase -- {} $data {} data regsub -all -nocase -- {\s+} $data { } data regsub -all -nocase -- {\\} $data {} data set data [string map {"
" "" "
" "" "" "" "" "" "
" "" "" "" "
" "" "" " $taforisms(color2)«" "" "$taforisms(color2)»"} $data] putserv "PRIVMSG $chan :$taforisms(color3)\002$nick\002$taforisms(color1), [subst -nocommands [string trimright $data]]\003" set taforisms(lasttime,$chan) [clock seconds] return 0 } proc taforisms_numgrp {number} { switch -glob -- "$number" { *11 {return 3} *12 {return 3} *13 {return 3} *14 {return 3} *1 {return 1} *2 {return 2} *3 {return 2} *4 {return 2} default {return 3} } } # Выводим сообщение о том, что скрипт удачно загружен. putlog "\[taforisms\] $taforisms(version) by $taforisms(author) loaded" }