Автор:
Forb
Дата: 23-10-2001 17:17:12©
Дарова, перец, содержащий
целую ораву ботов... Ботов-ламеров :),
которые ничего не умеют, кроме как
кричать "Op me cos, i'm lame" :)) А куча
возможностей для твоего бота могут
дать tcl-скрипты, написанные не каким-то
Alian`ом из Франции, а лично тобой... Тогда
ты будешь уверен на 100%, что ты научил
своего бота чему-либо хорошему ;)
Мутим первый скрипт... Например такой:
бот через некоторый промежуток
времени говорит какой-нибудь прикол...
Приколы берутся из файла. Все, что тебе
желательно знать, дык это основы TCL и
эггдроп-команды, которые можно
использовать в скриптах... За этим
обращайся в директорию "help" в
главной дире твоего бота...
Итак, пишем сам скрипт..
# Talker script by Forbik: <root@k-ur.net> # Трэйдмарк
;) Вставить свое :)
# Variables: # Переменные для работы скрипта
set tcolor 10 # Цвет сообщения бота
set tint 1 # Интервал (в минутах)
set tfile "talker.txt" # Файл с приколами
set counts 0 # Подсчет фраз
proc ptalk {} {
global tint tcolor counts talks
putserv "privmsg #sonet :$tcolor$talks([rand $counts])"
timer $tint { ptalk }
}
# Берем переменные для подпрограммы и
пишем рандомную фразу из массива $talks...
putserv - передача данных на IRC-сервер. rand -
вычисляет случайное число, и
повторный запуск таймера
proc loadtalks {} {
global tfile counts talks
set talkfile [open $tfile r]
while { [gets $talkfile line ] >=0 } {
set talks($counts) $line;
incr counts;
}
close $talkfile
}
# Процедура открывает файл с приколами
и создает массив всех фраз..
loadtalks
ptalk;
# Выполнение 2х процедур
bind dcc +n talk stat_dcc
proc stat_dcc {handle idx args} {
global tcolor tint tfile counts
putlog "Talk script by Forbiki:\r"
putlog "Talk color is: $tcolor\r"
putlog "Talk interval is: $tint minute(s)\r"
putlog "Talk file is: $tfile\r"
putlog "Talks: $counts\n\r"
}
# Если какой-либо оунер бота на PartyLine
наберет "talk", то получит текущие
значения переменных... Их также можно
изменить с помощью "set".
timer $tint { ptalk }
# Ну и конечно... Запуск таймера: через
время tint, выполняется процедура ptalk...
putlog "All: $counts talks loaded" # Отчет о при
загрузке скрипта
Вот и все... все очень просто... Главное
НЕМНОГО знать Tcl..
Еще 1 необходимый скрипт... Я всегда
пользую его, и он мне очень помогает
следить за происходящим в PartyLine...
Походу дела, станет понятно его
предназначение:
###### BINDS
bind join - *!*@* do_join_user
bind part - *!*@* do_part_user
###### END BINDS
# Слежение за вход на канал и выход с
канала.. И привязка этим событиям
соответствующих подпрограмм
###### START PROCEDURE
proc do_join_user {nick uhost handle chan args} {
## Процедура захода на канал...
global botnick
if {($nick == $botnick)} {
putlog "I'm joined on $chan"
# Если ник совпадает с ником бота -
сообщить в партилайн, что бот зашел на
канал..
} else {
if {!($handle=="*")} {
putlog "$nick ($uhost) joined $chan as \"$handle\""
} else {
putlog "$nick ($uhost) joined $chan as \"more mortal\""
}
# Иначе сообщить ник юзера и его
прописанный ник на боте (либо - "простой
смертный").
}}
proc do_part_user {nick uhost handle chan args} {
global botnick
if {($nick == $botnick)} {
putlog "I'm parted from $chan"
} else {
putlog "$nick parted from $chan"
}}
# Почти тоже самое с Part
putlog "Join script loaded!" # Отчет о
загрузке
Вот и весь незаменимый скрипт!
Согласитесь, удобно, когда
оповещается, кто заходит и уходит с
канала...
Во второй части моей статьи я расскажу
о Botnet скрипте и многих других
возможностей TCL&&Eggdrop...
http://www.xakep.ru/