Вопросы по скриптам
|
|
|
pLanu2 18.08.12 15:00 #241
|
Code proc ::rule::move:rule {nick uhost hand chan text} { variable move_rule_format; variable msg_clean_database set file "data/rule.txt" if {$text == ""} {putserv "NOTICE $nick :Формат: $move_rule_format"; return} if {![file exists $file]} {set f [open $file w+]; close $f} set filep [open $file r]; set list [lrange [split [read $filep] \n] 0 end-1]; close $filep if {$list == ""} {putserv "NOTICE $nick :$msg_clean_database"; return} { # позиция элемента, который переносим set plist [expr [lindex [split $text] 0]-1] # запоминаем его set alist [lindex $list $plist] # убираем его set list [lreplace $list $plist $plist] # добавляем его на нужную позицию set list [linsert $list [expr [lindex [split $text] 1]-1] $alist] # переписываем файл set filep [open $file w+]; foreach line $list { puts $filep $line }; close $filep putserv "NOTICE $nick :Правило под номером $text перемещено"; return} { putserv "NOTICE $nick :Правила под номером $text не существует. Всего правил: [llength $list]."; return} }
что не так в этом процессе, даю команду переноса: !%правило 1 2 но ничего выводить не хочет
|
|
|
|
Vladislav 18.08.12 15:37 #242
|
И чем тебя команда !правила не устроила там всё тоже самое? Смотри бот пишет ошибку, а их тут много, ты совсем не думаешь что делаешь, алгоритм нарушен.
|
|
|
|
pLanu2 22.08.12 12:14 #243
|
как сделать, чтобы: в скрипте, после ввода команды, выводятся, например: две или более фразы: или выполняется любое действие (не важно)
Code putserv "NOTICE $nick :добро пожаловать" putserv "PRIVMSG $chan :приветствуем нового посетителя" или тому подобное: как сделать, чтобы когда 1-ая фраза вывелась, а вторая выводилась только спустя указанное время: минуту или 2?
|
|
|
|
Vladislav 22.08.12 13:32 #244
|
Через 60 секунд выведет второе сообщение, но при этом то что будет ниже второй строки выполниться сразу.
Code putserv "NOTICE $nick :добро пожаловать" utimer 60 [list putserv "PRIVMSG $chan :приветствуем нового посетителя"]
Если нужно использовать блок действий через какое-то время то лучше для этого создать отдельную процедуру и запустить её по таймеру.
Code utimer 60 [list proc_name $nick $uhost $hand $chan]
|
|
|
|
pLanu2 23.08.12 08:39 #245
|
Quote Процедура реагирует на чей-либо вход на канал (JOIN) Code bind join - * name proc name {nick uhost hand chan} { putlog ok }
как сделать, чтобы реагировала не на всех, а только на определенных, прописанных в скрипте, юзеров?
|
|
|
|
Vladislav 23.08.12 10:30 #246
|
Quote bind join - * name proc name {nick uhost hand chan} { set list {"ник1" "ник2" "ник3"} if {[lsearch -exact -nocase $list $nick] == -1} {return} putlog ok }
|
|
|
|
pLanu2 23.08.12 16:22 #247
|
Code # скрипт для "U2Bot", восстанавливающего "HKS", при его крахе
bind part - * u2botcrash proc u2botcrash {nick uhost hand chan text} { set list {"HKS"} if {[lsearch -exact -nocase $list $nick] == -1} {return} if {[catch {exec /home/brian/eggdrop/killall eggdrop}]} { return } putserv "PRIVMSG Brian :Процесс \"eggdrop\" удален" putserv "PRIVMSG Brian\[OFFline\] :Процесс \"eggdrop\" удален" utimer 10 [list if {[catch {exec /home/brian/eggdrop/eggdrop.sh}]} { return }] utimer 10 [list putserv "PRIVMSG Brian :Процесс \"eggdrop\" запущен"] utimer 10 [list putserv "PRIVMSG Brian\[OFFline\] :Процесс \"eggdrop\" запущен"] }
bind join - * u2botrecovery proc u2botrecovery {nick uhost hand chan} { set list {"HKS"} if {[lsearch -exact -nocase $list $nick] == -1} {return} utimer 180 [list putserv "PRIVMSG $chan :!addroom"] }
сам процесс удаления и запуска процесса "eggdrop" выполняется, а сообщение об этом не приходит, может что-то не так сделал? все работает, сам виноват: процесс не удаляется, делается return и в результате дальше ничего не выводит а можно поменять процесс для eggdrop'а, чтобы был не "eggdrop". а например: "bot" или что-то в этом роде?
|
|
|
|
Vladislav 23.08.12 22:08 #248
|
У бота есть свой номер он находится в в корне бота в файле pid.* убивать надо по этому номеру kill номер вообще я не понимаю что ты делаешь, зачем убивать бота и запускать его, о каком крахе ты говоришь, бот не должен падать, да и здесь написано что нужно сделать чтоб бот запускался сам.
|
|
|
|
pLanu2 24.08.12 08:05 #249
|
раньше я уже писал, что у меня бот, когда установлен OpenVPN на сервере и он держит "комнату", иногда он вылетает с канала с сообщением "Ping Timeout", вот я и хочу, чтобы хелпбот, при уходе с канала того бота, убивал этот процесс, потом запускал, и выводил на канал команду запуска "комнгаты"
с автозапуском бота все хорошо, но я заметил, что pid.* номер постоянно меняется при последующем запуске бота, можно его как-то сделать статичным?
|
|
|
|
Vladislav 24.08.12 11:09 #250
|
Прочитай файл:
Code set file "/home/vladislav/eggdrop/pid.WindropClan" if {[file exists $file]} {set filep [open $file r]; set pid [read $filep]; close $filep} {set pid ""}
если такой файл есть то в $pid будет номер.
|
|
|
|
kuka4 25.08.12 02:11 #251
|
Подскажите как отключить на боте команду "дай" и как отключить расшифровку ссылки на вроде этого
Quote http://www.youtube.com/watch?v=NANop72Wodc Dino MC47 - Никто не забыт (65 лет Великой ПОБЕДЫ) - YouTube
|
|
|
|
Vladislav 25.08.12 11:12 #252
|
На канале: !set +nofignya - для "дай" но отключатся и другие команды как !сиси !пенис !эмо и т.п. или тогда убрать процедуру эту из скрипта fignya.tcl
!set +notitle - отключит информацию о ссылках.
Информация о флагах отключения выводится на главной странице при наводе мышкой на команду.
|
|
|
|
pLanu2 26.08.12 10:00 #253
|
как сделать: чтобы когда бот заходил на канал, он сразу же выполнял какое-то действие? не:
Code bind join - * process а когда сам бот входит на канал
|
|
|
|
Vladislav 26.08.12 11:00 #254
|
А чем тебе не нравится bind join, добавь туда элементарную проверку на ник бота. Например я тут указал что если ник не равен нику бота то процедура останавливается, если равен то выполняется дальше.
Code bind join - * name proc name {nick uhost hand chan} { if {$nick != $::botnick} {return} putlog ok }
|
|
|
|
pLanu2 26.08.12 12:01 #255
|
я и имел ввиду, добавить проверку, только не так вопрос расписал:)
как работает команда "!рестарт", в каком это скрипте, как выглядит такой процесс рестарта бота?
|
|
|