- Код: Выделить всё
if { ![info exists egglib(ver)] || [expr {$egglib(ver) < 1.2}] } {
putlog "***********************************************"
putlog " egglib_pub NOT FOUND OR VERSION IS TOO OLD!"
putlog " Download last version of egglib_pub here:"
putlog "http://eggdrop.org.ru/scripts/egglib_pub.zip"
putlog "***********************************************"
die
}
# bind на команду !online для всех юзеров.
bind pub - !код pub_online
proc pub_online {nick uhost hand chan args} {
# указываем URL для сайта, с которого будет брать информацию
set query "http://10.37.2.51/"
# Инициализируем HTTP, нам вернут id, с котором мы будем работать далее
# а так-же зарегестрируются 2 функции pub_online_on_data - это вызовется
# если данные прийдут. и pub_online_on_error - вызовется если произойдет
# какой-то облом.
set id [::egglib::http_init "pub_online_"]
# собственно забираем страничку.
# [list $nick $uhost $chan] - это дополнительные аргументы которые нужно
# передать в pub_online_on_error и pub_online_on_data
::egglib::http_get $id $query [list $nick $uhost $chan]
}
# callback функция для ошибок.
proc pub_online_on_error {id nick uhost chan} {
# скажем юзеру об ошибке
::egglib::out $nick $chan "Я не смог соединиться с сервером... -.-"
}
# callback функция если всё хорошо...
proc pub_online_on_data {id data nick uhost chan} {
putlog "pub_online_on_data"
# разбиваем html в $data на строки... и обрабатываем каждую строку.
foreach line [split $data \n] {
# ищем нужную нам строку, заодно и выдираем оттуда заветное число.
# "\ " мы делаем чтоб regexp был правильный
# "\d+" означает 1 или более сиволов от 0 до 9.
# параметры для regexp:
# $line - отсюда берём
# g - сюда положится всякий злам
# num - сюда положится то, что в скобках (\d+) - те, наше число.
if { [regexp -nocase -- {<b>Игроки:</b> (\d+)} $line g num]} {
# если число нашлось... печатаем результат на канал
::egglib::out $nick $chan "Игроков на безмодовом сервере: $num"
# ... и выходим из функции...
return
}
}
# если мы попали сюда... значит мы не смогли найти желаемую строку...
# напишем что не смогли, чтоб бот не был молчалив.
::egglib::out $nick $chan "Я не смог узнать текущее кол-во юзеров..."
}
потом со временем поднял второй игровой сервер, требуется мониторинг и на него, а как сделать не понимаю.
сделал так
- Код: Выделить всё
if { ![info exists egglib(ver)] || [expr {$egglib(ver) < 1.2}] } {
putlog "***********************************************"
putlog " egglib_pub NOT FOUND OR VERSION IS TOO OLD!"
putlog " Download last version of egglib_pub here:"
putlog "http://eggdrop.org.ru/scripts/egglib_pub.zip"
putlog "***********************************************"
die
}
# bind на команду !online для всех юзеров.
bind pub - !код pub_online
proc pub_online {nick uhost hand chan args} {
# указываем URL для сайта, с которого будет брать информацию
set query "http://10.10.10.38/"
set query2 "http://10.10.10.38/statcod5/"
# Инициализируем HTTP, нам вернут id, с котором мы будем работать далее
# а так-же зарегестрируются 2 функции pub_online_on_data - это вызовется
# если данные прийдут. и pub_online_on_error - вызовется если произойдет
# какой-то облом.
set id [::egglib::http_init "pub_online_"]
set id2 [::egglib::http_init "pub_online2_"]
# собственно забираем страничку.
# [list $nick $uhost $chan] - это дополнительные аргументы которые нужно
# передать в pub_online_on_error и pub_online_on_data
::egglib::http_get $id $query [list $nick $uhost $chan]
}
::egglib::http_get $id2 $query2 [list $nick $uhost $chan]
}
# callback функция для ошибок.
proc pub_online_on_error {id nick uhost chan} {
proc pub_online2_on_error {id nick uhost chan} {
# скажем юзеру об ошибке
::egglib::out $nick $chan "Я не смог соединиться с сервером... -.-"
}
::egglib::out $nick $chan "Я не смог соединиться с сервером... -.-"
}
# callback функция если всё хорошо...
proc pub_online_on_data {id data nick uhost chan} {
proc pub_online2_on_data1 {id data nick uhost chan} {
putlog "pub_online_on_data"
putlog "pub_online2_on_data1"
# разбиваем html в $data на строки... и обрабатываем каждую строку.
foreach line [split $data \n] {
foreach line [split $data1 \n] {
# ищем нужную нам строку, заодно и выдираем оттуда заветное число.
# "\ " мы делаем чтоб regexp был правильный
# "\d+" означает 1 или более сиволов от 0 до 9.
# параметры для regexp:
# $line - отсюда берём
# g - сюда положится всякий злам
# num - сюда положится то, что в скобках (\d+) - те, наше число.
if { [regexp -nocase -- {<b>Игроки:</b> (\d+)} $line g num]} {
if { [regexp -nocase -- {<b>Игроки:</b> (\d+)} $line g num1]} {
# если число нашлось... печатаем результат на канал
::egglib::out $nick $chan "Игроков на сервере CoD4 - $num Статистика тут http://10.10.10.38/stats/ Подробный мониторинг тут http://10.10.10.38"
::egglib::out $nick $chan "Игроков на сервере CoD5 - $num1
# ... и выходим из функции...
return
}
}
# если мы попали сюда... значит мы не смогли найти желаемую строку...
# напишем что не смогли, чтоб бот не был молчалив.
::egglib::out $nick $chan "Я не смог узнать текущее кол-во игроков..."
}
не работает, где затык подскажите пожалуйста,я в ткл скриптинге не шарю вообще
From tvrsh: не забываем использовать теги [Code].