### # # Название: uanekdot.tcl # Версия: 1.0 # Автор: username # ### # # Описание: Скрипт собирает анекдоты с сайта http://moskva.com/ # ### # # Установка: # 1. Скопируйте скрипт uanekdot.tcl в папку scripts вашего бота. # 2. В файле eggdrop.conf впишите строку source scripts/uanekdot.tcl # 4. Сделайте .rehash боту. # ### # # Версион хистори: # # 1.0(17.09.2007) Первая паблик версия. # ### # Указываем пространство имен. namespace eval uanekdot {} # Сбрасываем значения всех переменных. foreach p [array names uanekdot *] { catch {unset uanekdot($p) } } # Указываем канальный флаг(.chanset #chan +nopubuanekdot для отключения скрипта). setudef flag nopubuanekdot ### ### # Меню настроек ниже этой линии: # # ______________________________ # ### ### # Префикс команд. set uanekdot(pref) "!" # Список команд на которые будет отзываться скрипт. set uanekdot(binds) "anekdot анек" # Разрешить работу со скриптом в привате у бота? (да-1/нет-0) set uanekdot(msg) 1 # Каналы на которых будет работать этот скрипт. set uanekdot(channels) "#456 #helpop #bots" # Сколько команда за сколько секунд считать флудом и начинать игнорить юзера. set uanekdot(flood) 5:180 # Время(мин) игнора. set uanekdot(ignore) 10 ### # Настройки цветов. # Основной цвет текста. set uanekdot(color1) "\00301" # Цвет заголовка ссылки. set uanekdot(color2) "\00301" # Цвет ссылки. set uanekdot(color3) "\00301" ### ### ### # Ниже этой линии начинается код, не изменяйте его если не знаете TCL: # # ____________________________________________________________________ # ### ### # Версия скрипта. set uanekdot(version) "uanekdot.tcl version 1.0" # Автор скрипта. set uanekdot(author) "username" # Обработка биндов. foreach bind [split $uanekdot(binds) " "] { bind pub -|- "$uanekdot(pref)$bind" uanekdot_pub if {$uanekdot(msg) >= 1} { bind msg -|- "$uanekdot(pref)$bind" uanekdot_msg } } # Процедура обработки приватных команд. proc uanekdot_msg {nick uhost hand text} { global uanekdot uanekdot_proc $nick $uhost $hand $nick $text } # Процедура обработки паблик команд. proc uanekdot_pub {nick uhost hand chan text} { global uanekdot # Проверяем наличие флага. if {[channel get $chan nopubuanekdot]} { return } uanekdot_proc $nick $uhost $hand $chan $text } # Процедура обработки запроса. proc uanekdot_proc {nick uhost hand chan text} { global uanekdot if {[string range $chan 0 0] == "#" && [lsearch -exact [split [string tolower $uanekdot(channels)]] [string tolower $chan]] == -1} { return } # Проверка на флуд. if {[uanekdot_flood $nick $uhost]} { return } set query "http://ostrie.moskva.com/?do=Item&id=92[rand 8][rand 8][rand 8][rand 8]" set id [::egglib::http_init "uanekdot_"] ::egglib::http_get $id $query [list $nick $uhost $chan] putlog "\[uanekdot\] $nick/$chan" } proc uanekdot_on_error {id nick uhost chan} { ::egglib::out $nick $chan "$uanekdot(color1)Я не смог соединиться с $uanekdot(color3)http://ostrie.moskva.com" } proc uanekdot_on_data {id data nick uhost chan} { global uanekdot regsub -all -- "\n" $data {} html foreach line [split $html "\n"] { # Забираем информация о анекдоте, автора, рейтинг и дату размещения. if {[regexp -nocase -- {
} $line garb data]} { regsub -all -nocase -- {\(} $data {} data regsub -all -nocase -- {\)} $data {} data regsub -all -nocase -- {,} $data {} data set reiting [lindex [split $data] 5] if {[regexp -nocase -- {\"(.*?)\".*?\"(.*?)\"\ (.*?)$} $data g author time reit]} { set author [encoding convertto cp1251 [string tolower [encoding convertfrom koi8-r $author]]] } regsub -all -nocase -- {Ч } $time {} time #regsub -all -nocase -- {"} $data {} data #set time [lindex [split $data] 3] } # Забираем сам анекдот. if {[regexp -nocase -- {