Меню сайта
Анонсы
mIRC скриптерам Опытным скриптерам
Категории
ssh \ telnet [2]
configuration [9]
tcl scripting [2]
уроки скриптинга tcl
Мини-чат
Случайное фото
ODHa_Taka9I
+++

К нам присоединилось:
Сегодня: 0
Вчера: 0
За последние 7 дней: 0
За последние 30 дней: 0
Отправить SMS и MMS
SMS
Beeline МТС Мегафон

ММС
Beeline МТС Мегафон
Главная » Статьи » egg|win drop » tcl scripting

FAQ TCL
Q: TCL трудный язык?
A: Нет :)

Q: Как посчитать количество пользователей в канале?
A: set usersnum [llength [chanlist $chan]]

Q: Как проверить флаги пользователя?
A: [matchattr $hand <flag|flag> $chan]
Флаги расположены так: <глобальный>|<локальный>
Если канал не указать, будут проверены только глобальные флаги.

Q: Как создать список?
A: Список создается с помощью команды:
set list "one two three four five"
В итоге мы получим список в пятью элементами.
Пустой список создается командой:
set list ""

Q: Как взять один элемент списка?
A: Первый элемент всегда имеет номер "0". Значит для получения первого элемента сделайте:
lindex $list 0

Q: Как выбрать строку из списка наугад (RND)?
A: set list { "number one" "number two" "number three" }
set random [lindex $list [rand [llength $list]]]

Q: Как заменить символ в строке на другой?
A: regsub -all -- "windows" "$string" "unix" mystring
Заменит слова "windows" на "unix" в строке $string и запишет новую строку в $mystring.

Q: Как из куска HTML вырезать текст между <pre> и </pre>?
A: Сначала найти <pre> через lsearch, потом найти </pre>. И выбрать серединку через lrange.
set a [lrange $str [expr [lsearch $str "<pre>"] + 1] [expr [lsearch $str "</pre>"] - 1]]

Q
: Как взять один символ (или два/три символа) из строки?
A: set string "eggdrop"
Пример с одним символом (результат будет "d"):
string index $string 3
Пример с группой символов #1 (результать будет "dr"):
string range $string 3 4
Пример с группой символов #2 (результать будет "drop"):
string range $string 3 end

Q: Как прочитать данные из файла на диске?
A: set file [open myfile.txt r+]
set result [read $file]
close $file

Q: Как записать в файл на диске?
A: set file [open myfile.txt w+]
puts $file hello
close $file

Q: Как взять из файла строку наугад?
A: Правда не стоит это делать на больших файлах.
set file [open myfile.txt r]
set data [read $file]
close $file
set lines [split $data \n]
set randline [lindex $lines [rand [llength $lines]]]

Q: Как отрабатывать процедуру по времени?
A: bind time - <mask> my_time_proc
proc my_time_proc {min hour day month year} {
}
bind time - "00 * * * *" my_time_proc (каджый час)
bind time - "05 05 * * *" my_time_proc (в 5:05 утра)
bind time - "?0 * * * *" my_time_proc (каждые 10 минут)

Q: Как отрабатывать процедуру каждые XX минут?
A: if {![info exists my_proc_running]} {
timer 20 my_proc
set my_proc_running 1
}
proc my_proc {} {
# начало вашего кода
# конец вашего кода
timer 20 my_proc
eturn 1
}

Q: Как сделать чтобы процедура иногда срабатывала, а иногда нет?
A: Можно просто сделать выборку по RND, и если одно число, то работать, если нет, то не работать. Пример выборки одного из трех:
set x [rand 3]
if {$x==3} {
}

Q: Как получить дату/время заданного вида?
A: clock format [unixtime] -format <вид>
Флаги форматов даты/времени в документации на TCL.
Пример: Получить из unixtime дату формата "01 May 2001 12:05"
[clock format [unixtime] -format "%d %m %Y %H:%M"]

Q: Имеем строку с датой формата "2001-05-27 11:22:33". Как ее преобразовать в "27-05-2001 11:22"?
A: set date [split "2001-05-27 11:22:33"]
set a [split [lindex $date 0] "-"]
set b [split [lindex $date 1] ":"]
set output "[lindex $a 2]-[lindex $a 1]-[lindex $a 0] [lindex $b 0]:[lindex $b 1]"

Q: Как сделать задержку перед выполнением процедуры?
A: Первый вариант (замораживает общий поток):
after 1000
putserv "PRIVMSG $chan :test"
Второй вариант (создает свой поток для работы):
after 1000 putserv "PRIVMSG $chan :test"
1000 - это миллисекунды (ms). 1000ms = 1s.

Q: Как послатать сообщения в канал/пользователю?
A: Сообщение в канал: putserv "PRIVMSG $chan :message from bot..."
NOTICE пользователю: putserv "NOTICE $nick :my notice to you..."
ACTION в канал: putserv "PRIVMSG $chan :\001ACTION вернулся...\001"
CTCP-запрос пользователю: putserv "PRIVMSG $nick :\001VERSION\001"

Q: Как узнать откуда пришел ACTION. Из канал или из привата?
A: proc action_bind {nick uhost hand dest keyword text} {
if {[string index $dest 0] == "#"} { return "from channel" }
return "from private"
Категория: tcl scripting | Добавил: DmitRexInfo (20 Август 11)
Просмотров: 1568 | Комментарии: 1 | Рейтинг: 5.0/1 |

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Мини инфо
гость
03:25:24
Группа: Гуси

Логин:
Пароль:
Поиск по сайту
:)

456
Код нашей кнопки:
Рекомендуем :)
Лучший mIRC клиент:)
Лучший mIRC БОТ:)
Френды :)
[CooLBots] EpicNet
Статистика
Каталог webplus.info Locations of visitors to this page
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Были на сайте сегодня: Patriotmnj ~
Коментариев: 4524
Форум: 354/2695
Фоток: 1228
Новостей на сайте: 42
Файлов: 492
Статьи: 81
Гостевая книга: 25


Всево зарегено: 34796
Из них
Пользователей: 34476
Проверенные 311
Администраторы 5
Гл. Администраторы 3
Из них
Парней: 34608
Девушек: 170
Copyright MyCorp © 2017Хостинг от uCoz