### # # Название: benzin.tcl # Версия: 1.0 # Автор: tvrsh # Оффсайт: http://egghelp.ru/ # ### # # Описание: Скрипт забирает с сайта http://benzin.golosmsk.ru/ стоимость бензина в Москве. # ### # # Установка: # 1. Скопируйте скрипт benzin.tcl в папку scripts вашего бота. # 2. В файле eggdrop.conf впишите строку source scripts/benzin.tcl # 3. Сделайте .rehash боту. # ### # # Версион хистори: # # 1.0(31.01.2010) Первая паблик версия. # ### namespace eval benzin { # Сбрасываем значения всех переменных. foreach p [array names benzin *] { catch {unset benzin($p) } } # Указываем канальный флаг(.chanset #chan +benzin для включения скрипта). setudef flag benzin ### ### # Меню настроек ниже этой линии: # # ______________________________ # ### ### variable benzin array set benzin { pref {!} binds {benzin бензин топливо} msg 1 delay 10 color1 \00314 color2 \00303 color3 \00305 version "benzin.tcl version 1.0" author "tvrsh" } ### ### # Ниже этой линии начинается код, не изменяйте его если не знаете TCL: # # ____________________________________________________________________ # ### ### # Обработка биндов. foreach bind [split $benzin(binds) " "] { bind pub -|- "$benzin(pref)$bind" ::benzin::benzin_pub if {$benzin(msg) >= 1} { bind msg -|- "$benzin(pref)$bind" ::benzin::benzin_msg } } # Процедура обработки приватных команд. proc ::benzin::benzin_msg {nick uhost hand text} { variable benzin ::benzin::benzin_proc $nick $uhost $hand $nick } # Процедура обработки паблик команд. proc ::benzin::benzin_pub {nick uhost hand chan text} { variable benzin # Проверяем наличие флага. if {![channel get $chan benzin]} { return } ::benzin::benzin_proc $nick $uhost $hand $chan } # Процедура обработки запроса. proc ::benzin::benzin_proc {nick uhost hand chan} { variable benzin if {[info exists benzin(lasttime,$chan)] && [expr $benzin(lasttime,$chan) + $benzin(delay)] > [clock seconds]} { putserv "NOTICE $nick :$benzin(color1)Запрос не чаще одного раза в $benzin(color2)$benzin(delay) $benzin(color1)[lindex {. секунду секунды секунд} [benzin_numgrp $benzin(delay)]]." putserv "NOTICE $nick :$benzin(color1)Подождите $benzin(color3)[expr $benzin(delay) - [expr [clock seconds] - $benzin(lasttime,$chan)]] $benzin(color1)[lindex {. секунду секунды секунд} [benzin_numgrp [expr $benzin(delay) - [expr [clock seconds] - $benzin(lasttime,$chan)]]]] до следующего запроса." return 0 } set benzin_tok [::http::config -useragent "Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)"] set benzin_tok [::http::geturl http://benzin.golosmsk.ru/] set data [::http::data $benzin_tok] ::http::cleanup $benzin_tok putlog "\[benzin\] $nick/$chan" regexp {(.*?)} $data "" data regsub -all -- {\<[^\>]*\>|\n| } $data "" data regsub -all -- {\s+} $data " " data putserv "PRIVMSG $chan :$benzin(color2)АИ80 - $benzin(color3)[lindex $data 4]$benzin(color2), АИ92 - $benzin(color3)[lindex $data 5]$benzin(color2), АИ95 - $benzin(color3)[lindex $data 6]$benzin(color2), АИ98 - $benzin(color3)[lindex $data 8]$benzin(color2), ДТ - $benzin(color3)[lindex $data 7]$benzin(color2). $benzin(color1)Цены от $benzin(color2)[string trim [lindex $data 11] ","]$benzin(color1).\003" set benzin(lasttime,$chan) [clock seconds] return 0 } proc benzin_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 "\[benzin\] $benzin(version) by $benzin(author) loaded" }