TCL скрипт для бота

Написал Danila Vershinin Среда, 23 Май 2007

Дарова, перец, содержащий целую ораву ботов... Ботов-ламеров :), которые ничего не умеют, кроме как кричать "Op me cos, i'm lame" :)) А кучу возможностей для твоего бота могут дать tcl-скрипты, написанные не каким-то Alian`ом из Франции, а лично тобой... Тогда ты будешь уверен на 100%, что ты научил своего бота чему-либо хорошему ;)

Мутим первый скрипт... Например такой: бот через некоторый промежуток времени говорит какой-нибудь прикол... Приколы берутся из файла. Все, что тебе желательно знать, дык это основы TCL и эггдроп-команды, которые можно использовать в скриптах... За этим обращайся в директорию "help" в главной дире твоего бота... Итак, пишем сам скрипт..

 
# Talker script by Forbik: # Трэйдмарк ;) Вставить свое :)
 
# 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!" # Отчет о загрузке

Вот и весь незаменимый скрипт! Согласитесь, удобно, когда оповещается, кто заходит и уходит с канала...
Последнее обновление ( Понедельник, 24 Сентябрь 2007 )
< Пред.   След. >