Итак, у тебя появился свой ламабот, ты
регулярно посещаешь http://www.egghelp.org,
чтобы получить свежие TCL-скрипты... Ну, и
читаешь статьи на http://www.xakep.ru
по этой теме... В этой статье я попытаюсь
научить тебя кодить на TCL и составлять какие-никакие,
но свои скрипты... Я воспользуюсь
собственными знаниями и, как не странно,
стандартым help`ом eggdrop`а... В этом нет ничего
особенного, я уверен на 100%, что только лишь
десятки из сотен и сотни из тысячей юзеров
заглядывают в "help/tcl-commands.doc", чтобы
просвятиться... Русского хелпа я еще ни разу
не встречал... Так что, поехали, как сказал
Гагарин 🙂
1) Правила языка
В принципе, у того, кто кодит на TCL, проблем с
TCL в eggdrop`е быть не должно... Для остальных
объясню некоторые моменты:
Точку с запятой в конце каждой строки
ставить необязательно, ею отделяются
комментарии от кода.
Загрузить скрипт можно командой "tcl source
путь_к_скрипту". Если скрипт в директории
"scripts/mytcl.tcl", его грузим так: "tcl source
scripts/mytcl.tcl". Причем путь всех файлов,
которые используются в скрипте,
отсчитывается от папки eggdrop. Для постоянной
загрузки скрипта внеси строку в конфиг-файл
бота: "source путь/к_скрипту" (без кавычек),
но помни, если в скрипте будет допущена
ошибка, eggdrop не запустится..
Перезагрузить скрипт можно командой rehash, Но
при этом таймеры от старого скрипта
остаются активными... При команде "restart"
такого не происходит
2) Основные команды
Рассмотрим основные команды TCL для eggdrop`а.
putserv <text>
Пожалуй, самая основная команда. Отправка
"сырых" данных на IRC-сервер. Допустим,
строчка "putserv privmsg #lamabot :I'm new bot on this lamest
channel" в скрипте, дает возможность боту
сказать очередную ламерскую фразу на канад
#lamabot 🙂 Аналог команды на Partyline - "dump".
putkick <#channel> <nick,nick,...> [reason]
Кикает ламера(ов) с канала #channel c резоном,
который ты укажешь... Простенько и со вкусом
🙂
putlog <text>
Кидает в Partyline текст, который ты напишешь... (комментарий)
countusers
Число юзеров, прописанных на боте.
validuser <handle>
Проверка "на вшивость" =) Проверяет,
есть ли юзер, прописанный под "handle".
Если есть - возвращает 1, если нет - 0.
finduser <nick!user@host>
Тоже хорошая команда... Ищет юзера по маске в
юзерфайле бота.
Если юзер не был найден, возвращает символ
"*".
chattr <handle> [changes [channel]]
Изменяет права юзера... Допустим "chattr lamer
+dk #lamabot" пропишет юзеру lamer, права +dk на
канал (деоп+бан).
adduser <handle> <hostmask>
addbot <handle> <address>
deluser <handle>
delhost <handle> <hostmask>
Думаю по названию, ясно предназначение...
3) Bind`s и процедуры...
Возможно создание сценариев на
определенное действие пользователей. Для
этого существуют свои команды и процедуры...
Для начала объявляется сценарий, командой
"bind", а затем, если событие происходит,
действие передается определенной
подпрограмме. Синтаксис такой:
bind event <flags> <command> <name>
name <nick> <user@host> <handle> <arg>
где event может быть: msg, pub, notc, join, part, topc, kick..... и
многое другое...
Команд очень много... По help`у разобраться в
них не составит труда... Попробуем написать
скрипт... Который по фразе "!addop <nick>"
дает опа юзеру на канале.
### Start autoop script ###
bind pub n !op addop
proc addop {nick host handle channel arg} {
set opnick [lindex $arg 1]
putserv "MODE $channel +o $nick"
}
В целях безопасности работает только для
юзеров с флагом +n - хозяин бота. [lindex $arg 1] -
второй аргумент.. (вообще, lindex разделяет
аргументы по пробелам]
Теперь подгружай скрипт на партилайне
командой "source".. Я писал об этом выше.. и
модифицируй его на многие сценарии 😉 И
будет хороший скрипт, составленный тобой...