Скриптинг для Eggdrop (TCL) - Вопрос-Ответ

Как правильно и неправильно писать TCL скрипты для популярного бота


Где можно скачать TCL и документацию к нему?

Среда, 30 Май 2007

Последнее обновление Суббота, 23 Июнь 2007
100,00% из 1 голосовавших посчитали этот ответ полезным,  Я нахожу этот ответ  полезно полезно  бесполезно бесполезно


Где описаны все внутренние процедуры Eggdrop для скриптов?

Среда, 30 Май 2007
Прилагаемый к боту файл docs/tcl-commands.doc или перевод его на русском
Последнее обновление Суббота, 23 Июнь 2007
0% из 0 голосовавших посчитали этот ответ полезным,  Я нахожу этот ответ  полезно полезно  бесполезно бесполезно


Есть ли книги по TCL на русском языке?

Среда, 30 Май 2007

Последнее обновление Понедельник, 24 Сентябрь 2007
100,00% из 1 голосовавших посчитали этот ответ полезным,  Я нахожу этот ответ  полезно полезно  бесполезно бесполезно


Есть русская документация на TCL?

Среда, 30 Май 2007
http://www.florin.ru/win/tcl-tk/I_gu10.htm
Последнее обновление Вторник, 30 Ноябрь 1999
0% из 0 голосовавших посчитали этот ответ полезным,  Я нахожу этот ответ  полезно полезно  бесполезно бесполезно


Как вызвать и передать параметры процедуре?

Среда, 30 Май 2007
proc myproc {a b c} { ... }
myproc 1 2 3

Процедура myproc получит: a=1, b=2, c=3
Последнее обновление Вторник, 30 Ноябрь 1999
0% из 0 голосовавших посчитали этот ответ полезным,  Я нахожу этот ответ  полезно полезно  бесполезно бесполезно


Как вынуть из userfile пользователей с конкретными флагами?

Среда, 30 Май 2007
userlist AB
- покажет пользователей с флагом "A" или "B"
userlist AB&
- покажет пользователей с флагами "A" и "B"
Последнее обновление Суббота, 23 Июнь 2007
0% из 0 голосовавших посчитали этот ответ полезным,  Я нахожу этот ответ  полезно полезно  бесполезно бесполезно


Как запустить shell-команду и вывести output в канал?

Среда, 30 Май 2007
Если на выходе одна строка, можно просто:
set output [exec command]

Например:
set serveruptime [exec uptime]


А если на выходе несколько строк или вы не знаете сколько их будет, то лучше применять следующий код:
foreach temp [split [exec command] "\r\n"] {
     putserv "PRIVMSG $chan :$temp"
    }

Последнее обновление Вторник, 30 Ноябрь 1999
0% из 0 голосовавших посчитали этот ответ полезным,  Я нахожу этот ответ  полезно полезно  бесполезно бесполезно


Как из скрипта убить процедуру

Среда, 30 Май 2007
rename <proc_name> ""

Последнее обновление Суббота, 02 Июнь 2007
0% из 0 голосовавших посчитали этот ответ полезным,  Я нахожу этот ответ  полезно полезно  бесполезно бесполезно


Как посчитать количество пользователей в канале?

Среда, 30 Май 2007
set usersnum [llength [chanlist $chan]]

Последнее обновление Вторник, 30 Ноябрь 1999
0% из 0 голосовавших посчитали этот ответ полезным,  Я нахожу этот ответ  полезно полезно  бесполезно бесполезно


Как проверить содержит ли переменная цифру?

Среда, 30 Май 2007
if {![catch {expr $var}]} {
    # $var является числом
    } else {
    # $var не является числом
    }

Последнее обновление Вторник, 30 Ноябрь 1999
0% из 0 голосовавших посчитали этот ответ полезным,  Я нахожу этот ответ  полезно полезно  бесполезно бесполезно


Как прочитать или установить ENV-переменную?

Среда, 23 Май 2007
Прочесть :
set myenv $env(DISPLAY)

Установить:
set env(DISPLAY) unix:0

Проверить :
if {[info exists env(VARNAME)]}

Последнее обновление Среда, 23 Май 2007
0% из 0 голосовавших посчитали этот ответ полезным,  Я нахожу этот ответ  полезно полезно  бесполезно бесполезно


Как узнать IP бота?

Среда, 23 Май 2007
set ip [myip]
    foreach v {d c b a} {
     set $v [expr $ip & 255]
     set ip [expr $ip >> 8]
    }
    set botip "$a.$b.$c.$d"

Последнее обновление Вторник, 30 Ноябрь 1999
0% из 0 голосовавших посчитали этот ответ полезным,  Я нахожу этот ответ  полезно полезно  бесполезно бесполезно


Как узнать IP бота?

Среда, 23 Май 2007
set ip [myip]
    foreach v {d c b a} {
     set $v [expr $ip & 255]
     set ip [expr $ip >> 8]
    }
    set botip "$a.$b.$c.$d"

Последнее обновление Вторник, 30 Ноябрь 1999
0% из 0 голосовавших посчитали этот ответ полезным,  Я нахожу этот ответ  полезно полезно  бесполезно бесполезно


Как узнать какие события bind'ит мой бот?

Среда, 30 Май 2007
'.binds all' или '.binds <тип> all' (например '.binds DCC all')
Последнее обновление Суббота, 23 Июнь 2007
100,00% из 1 голосовавших посчитали этот ответ полезным,  Я нахожу этот ответ  полезно полезно  бесполезно бесполезно


Какие буквы или цифры я могу использовать в флагах пользователей для своих скриптов, чтобы не конфликтовали с ботовскими?

Среда, 23 Май 2007
Все большие буквы (A-Z) и цифры (0-9). Но если вы ставите еще и чужие скрипты, то следите, чтобы их флаги уже не конфликтовали с вашими.
Последнее обновление Среда, 23 Май 2007
0% из 0 голосовавших посчитали этот ответ полезным,  Я нахожу этот ответ  полезно полезно  бесполезно бесполезно


Можно ли каким-либо образом держать свои данные, не относящиеся к пользователям в userfile?

Среда, 30 Май 2007
По идее нет. Но можно прибегнуть к хитрости и содержать эти данные в XTRA-полях самого бота :)
Последнее обновление Вторник, 30 Ноябрь 1999
0% из 0 голосовавших посчитали этот ответ полезным,  Я нахожу этот ответ  полезно полезно  бесполезно бесполезно


После каких изменений в скрипте надо делать .restart, потому что .rehash не помогает?

Среда, 23 Май 2007
После удаления bind'ов и после изменения количества переменных в процедурах.
Последнее обновление Среда, 23 Май 2007
0% из 0 голосовавших посчитали этот ответ полезным,  Я нахожу этот ответ  полезно полезно  бесполезно бесполезно