Tcl-команды Eggdrop


В этом документе приведен исчерпывающий список всех Tcl-команд, добавленных в Eggdrop. Все встроенные, нормальные команды Tcl конечно же сохранены, но вы можете их использовать также и для скриптов. Список разбит на категории.

Список команд подходит в аккурат для Eggdrop v1.6.18. Скрипты, написанные для версий v1.3/1.4, возможно, будут работать после небольших изменений. Скрипты, написанные для v0.9, v1.0, v1.1 или v1.2, возможно, не будут работать без существенных изменений в коде. Команды, которые были изменены в этой версии Eggdrop (или просто новые команды) помечены слева вертикальной палочкой (|).

  1. [#output Функции для отправки серверу или в логи команд/сообщений]
  2. [#urmc Функции для работы с базой пользователей]
  3. [#chancmds Функции для управления каналами]
  4. [#dcccmds Функции для работы с DCC]
  5. [#notes Функции для работы с модулем NOTES]
  6. [#assoc Функции для работы с модулем ASSOC]
  7. [#compress Функции для работы с модулем COMPRESS]
  8. [#filesys Функции для работы с модулем FILESYS]
  9. [#misc Прочие функции]
  10. [#globvars Глобальные переменные]
  11. [#bind Bind]
    1. [#binda Типы привязок]
    2. [#bindb Возвращаемые значения]
  12. [#control Процедуры управления]
  13. [#tcp TCP-соединения]
  14. [#matchchars Символы, используемые в масках]

1. Функции для отправки серверу или в логи команд/сообщений

putserv <text> [options]
Описание: послать текст серверу, на подобие '.dump' (предназначается для прямых серверных команд); сообщение откладывается в очередь, так что вы не должны зафлудить сервер.Опции:

-next: поместить сообщение в начало очереди.
-normal: никакого эффекта

Возвраты: никакихМодуль: server
puthelp <text> [options]
Описание: послать текст серверу, подобно функции 'putserv', но используя другую очередь, предполагаемая для отправки сообщений на канал или человеку.Опции:

-next: поместить сообщение в начало очереди.
-normal: никакого эффекта

Возвраты: никакихМодуль: server
putquick <text> [options]
Описание: послать текст серверу, подобно функции 'putserv', но используя другую (и быструю) очередь.Опции:

-next: поместить сообщение в начало очереди.
-normal: никакого эффекта

Возвраты: никакихМодуль: server
putkick <channel> <nick,nick,...> [reason]
Описание: послать кики серверу и попытаться поместить столько ников в одну команду кика, сколько это возможно.Возвраты: никакихМодуль: irc
putlog <text>
Описание: послать текст в логфайл бота, помеченный как 'misc' (o)Возвраты: никакихМодуль: core
putcmdlog <text>
Описание: послать текст в логфайл бота, помеченный как 'command' (c)Возвраты: никакихМодуль: core
putxferlog <text>
Описание: послать текст в логфайл бота, помеченный как 'file-area' (x)Возвраты: никакихМодуль: core
putloglev <level(s)> <channel> <text>
Описание: послать в логфайл бота текст, вмещающий в себя все подробности указанных флагов. Используйте "*" для того, чтобы вести лог со всеми флагами.Возвраты: никакихМодуль: core
dumpfile <nick> <filename>
Описание: послать содержимое файла их директории help/text пользователю на IRC, используя /msg (одна строка - одно сообщение). Пользователь не имеет флагов, поэтому привязки к флагам внутри файла работать не будут.Возвраты: никакихМодуль: core
queuesize [queue]
Возвраты: число сообщений всех очередей. Если указана очередь, то только размер очереди. Очереди бывают: mode, server, help.Модуль: server
clearqueue <queue>
Описание: удаление всех сообщений из очереди. Возможные аргументы: mode, server, help или all.Возвраты: число удаленных строк из указанной очереди.Модуль: server

2. Функции для работы с базой пользователей

countusers
Возвраты: число пользователей в базе данных бота.Модуль: core
validuser <handle>
Возвраты: 1 если пользователь, чье имя присутствует, иначе - 0.Модуль: core
finduser <nick!user@host>
Описание: поиск пользовательской записи, которая полностью совпадает с заданной маской nick!user@hostВозвраты: найденный псевдоним, в противном случае - "*".Модуль: core
userlist [flags]
Возвраты: список пользователей бота. Вы можете здесь использовать систему совпадения флагов ([global]{&/|}[chan]{&/|}[bot]). '&' обозначает "и", '|' - "или". (имеется ввиду, что можно запросить список пользователей, имеющих определенный флаг. Про пользовательские флаги см. [users.html Пользователи и флаги] -- прим. mef)Модуль: core
passwdok <handle> <pass>
Описание: проверка пользовательского пароля. Проверка против пароля "" (пустая строка) или "-" исключает возможность отсутствия пароля у пользователя.Возвраты: 1 если пароль пользователя совпадает; иначе - 0.Модуль: core
getuser <handle> <entry-type> [extra info]
Описание: интерфейс к новой общей поддержке userfile. Допустимые вводимые значения:

{|

|- valign="top" | BOTFL | возвращает текущие флаги, установленные для пользователя ботом. |- valign="top" | BOTADDR | возвращает список, содержащий адрес бота, порт телнета и порт бота. |- valign="top" | HOSTS | возвращает список хостов для пользователя. |- valign="top" | LASTON | возвращает список, содержащий время (в формате unix) последней встречи с пользователем и место встречи (под "встречей" следует понимать тот момент, когда пользователь зашел на канал с ботом или на патилайн бота; т.е попал в логи бота -- прим. mef). 'LASTON #channel' вернет время последнего посещения канала или 0, если информация об этом отсутствует. |- valign="top" | INFO | возвращает глобальное пользовательское приветствие. |- valign="top" | XTRA | возвращает дополнительную пользовательскую информацию. |- valign="top" | COMMENT | возвращает комментарий для пользователя, видимый только мастером. |- valign="top" | EMAIL | возвращает пользовательский адрес электронной почты. |- valign="top" | URL | возвращает пользовательскую ссылку на интернет-сайт. |- valign="top" | HANDLE | возвращает пользовательский псевдоним так, как он сохранен в userfile. |- valign="top" | PASS | возвращает зашифрованный пользовательский пароль.

|}

Возвраты: информация, специфичная для каждого из допустимых вводимых значений.Модуль: core

setuser <handle> <entry-type> [extra info]
Описание: эта функция аналогична функции getuser. Она позволяет вам устанавливать различные значения, которые приведены ниже. И которые также совпадают с вышеописанной функцией.

{|

|- valign="top" | HOSTS | если использовать без третьего аргумента, все хосты для пользователя будут удалены. Иначе добавлены маска хоста *1* :P. |- valign="top" | LASTON | Настройка имеет три вариации. "setuser <handle> LASTON <unixtime> <place>" устанавливает глобальное время LASTON, "setuser <handle> LASTON, "setuser <handle> LASTON <unixtime>" устанавливает глобальное время LASTON (оставляя поле <place> пустым) и "setuser<handle> LASTON <unixtime> <channel>" устанавливает пользовательское время LASTON для канала (если это действительный канал). |- valign="top" | PASS | установка пользовательского пароля (третий аргумент не требуется).

|}Возвраты: никакихМодуль: core

chhandle <old-handle> <new-handle>
Описание: изменить псевдоним пользователя.Возвраты: 1 в случае удачного завершения; 0 - если новый псевдоним является негодным или уже используется, или в случае отсутствия пользователя.Модуль: core
chattr <handle> [changes [channel]]
Описание: изменение аттрибутов для пользовательской записи. Формат вносимых изменений прежний - '+f', '-o', '+dk', '-o+d' и т.д. Если изменения имеют формат '|<changes> <channel>, то флаги для указанного канала также изменятся. Вы можете также пользоваться форматом '+o|-o #channel'.Возвраты: новые флаги для пользователя (если вы не внесли изменений, то возвращаются текущие флаги). Если указан канал, возвратятся флаги этого канала в формате '<globalflags|channelflags>'. Символ "*" возвратится при отсутствии указанного пользователя.Модуль: core
botattr <handle> [changes [channel]]
Описание: функция аналогична вышеописанной, за исключением того, что этой функцией удобней изменять флаги бота, чем аттрибуты настоящих пользователей.Возвраты: новые флаги для бота (если вы не внесли изменений, то возвращаются текущие флаги). Если указан канал, возвратятся флаги этого канала в формате '<globalflags|channelflags>'. Символ "*" возвратится при отсутствии указанного бота.Модуль: core
matchattr <handle> <flags> [channel]
Возвраты: 1, если указанный пользователь имеет указанные флаги; иначе - 0.Модуль: core
adduser <handle> [hostmask]
Описание: создание новой записи пользователя с псевдонимом и указанной маской хоста (без пароля и флагами, указанными по умолчанию).Возвраты: 1 в случае удачного выполнения; 0, если псевдоним уже занят.Модуль: core
addbot <handle> <address>
Описание: добавление нового бота в userlist с псевдонимом и указанным адресом бота (без пароля и флагов).Возвраты: 1 в случае удачного выполнения; 0, если псевдоним уже занят.Модуль: core
deluser <handle>
Описание: позволяет удалить пользовательскую запись по псевдониму.Возвраты: 1 в случае удачного выполнения; 0, если пользователь отсутствует.Модуль: core
delhost <handle> <hostmask>
Описание: удаляет маску хоста из пользовательского списка хостов.Возвраты: 1 при выполнении; 0, если маска хоста (или пользователь) отсутствуют.Модуль: core
addchanrec <handle> <channel>
Описание: добавляет запись о канале пользователю.Возвраты: 1 при выполнении; 0, если пользователь или канал отсутствует.Модуль: channels
delchanrec <handle> <channel>
Описание: удаляет запись о канале у пользователя, включая все флаги, ассоциируемые с этим каналом.Возвраты: 1 при выполнении; 0, если пользователь или канал отсутствуют.Модуль: channels
haschanrec <handle> <channel>
Возвраты: 1 если данный псевдоним имеет запись указанного канала; иначе - 0.Модуль: channels
getchaninfo <handle> <channel>
Возвраты: приветствие для указанного канала (аналогично функции 'getinfo')Модуль: channels
setchaninfo <handle> <channel> <info>
Описание: установка приветствия на указанный канал для пользователя. Если приветствие "none", оно удаляется.Возвраты: никакихМодуль: channels
newchanban <channel> <ban> <creator> <comment> [lifetime] [options]
Описание:добавляет бан в список банов канала; 'creator' - тот, кто установил бан. В 'lifetime' устанавливается время бана (в минутах). Если 'lifetime' не установлено, в силу входит значение, указанное в конфигурационном файле бота. Установка 'lifetime' на 0 дает постоянный бан.Опции:

sticky: держать баны на канале всегда активными, даже с 'dynamicbans on'.
none: никакого эффекта

Возвраты: nothingМодуль: channels
newban <ban> <creator> <comment> [lifetime] [options]
Описание: добавляет бан в список глобальных банов (бан присутствует на всех каналах); 'creator' - тот, кто установил бан. В 'lifetime' устанавливается время бана (в минутах). Если 'lifetime' не установлено, в силу входит значение, указанное вконфигурационном файле бота. Установка 'lifetime' на 0 дает постоянный бан.Опции:

sticky: держать баны на канале всегда активными, даже с 'dynamicbans on'.
none: никакого эффекта

Возвраты: никакихМодуль: channels
newchanexempt <channel> <exempt> <creator> <comment> [lifetime] [options]
Описание: добавляет освобождение в список канала; 'creator' - тот, кто установил освобождение. В 'lifetime' устанавливается время освобождения (в минутах). Если 'lifetime' не установлено, в силу входит значение, указанное в конфигурационном файле бота. Установка 'lifetime' на 0 дает постоянное освобождение. Освобождение не удаляется до тех пор, пока присутствует бан, на который оно установленно. Для временных банов, время которых уже истекло, освобождение не удаляется до тех пор, пока бан не будет удален.Опции:

sticky: держать освобождение на канале всегда активным, даже с 'dynamicexempts on'.
none: никакого эффекта

Возвраты: никакихМодуль: channels
newexempt <exempt> <creator> <comment> [lifetime] [options]
Описание: добавляет освобождение в глобальный список (который имеет силу на всех каналах); 'creator' - тот, кто установил освобождение. В 'lifetime' устанавливается время освобождения (в минутах). Если 'lifetime' не установлено, в силу входит значение, указанное вконфигурационном файле бота. Установка 'lifetime' на 0 дает постоянное освобождение. Освобождение не удаляется до тех пор, пока бан не будет удален.Опции:

sticky: держать освобождение на канале всегда активным, даже с 'dynamicexempts on'.
none: никакого эффекта

Возвраты: никакихМодуль: channels
newchaninvite <channel> <invite> <creator> <comment> [lifetime] [options]
Описание: добавляет приглашение в список канала; 'creator' - тот, кто установил приглашение. В 'lifetime' устанавливается время приглашения (в минутах). Если 'lifetime' не установлено, в силу входит значение, указанное в конфигурационном файле бота. Установка 'lifetime' на 0 дает постоянное приглашение. Приглашение не удаляется до тех пор, на канале присутствует режим '-i'.Опции:

sticky: держать приглашение на канале постоянно активным, даже с 'dynamicinvites on'.
none: никакого эффекта

Возвраты: никакихМодуль: channels
newinvite <invite> <creator> <comment> [lifetime] [options]
Описание: добавляет приглашение в глобальный список (который имеет силу на всех каналах); 'creator' - тот, кто установил приглашение. В 'lifetime' устанавливается время освобождения (в минутах). Если 'lifetime' не установлено, в силу входит значение, указанное в конфигурационном файле бота. Установка 'lifetime' на 0 дает постоянное приглашение. Приглашение не удаляется до тех пор, на канале присутствует режим '-i'.Опции:

sticky: держать приглашение на канале всегда активным, даже с 'dynamicinvites on'.
none: никакого эффекта

Возвраты: никакихМодуль: channels
stick <banmask> [channel]
Описание: делает "липучий" бан или, если указан канал, то устанавливает "липучку" только на канал.Возвраты: 1 в случае удачного завершения; иначе - 0.Модуль: channels
unstick <banmask> [channel]
Описание: снимает с бана "липучесть" или, если указан канал, "липучка" снимается только с канала.Возвраты: 1 в случае удачного завершения; иначе - 0.Модуль: channels
stickexempt <exemptmask> [channel]
Описание: делает "липучее" освобождение или, если указан канал, устанавливает "липучку" только на канал.Возвраты: 1 в случае удачного завершения; иначе - 0.Модуль: channels
unstickexempt <exemptmask> [channel]
Описание: снимает с освобождения "липучесть" или, если указан канал, "липучка" снимается только с канала.Возвраты: 1 в случае удачного завершения; иначе - 0.Модуль: channels
stickinvite <invitemask> [channel]
Описание: делает "липучее" приглашение или, если указан канал, устанавливает "липучку" только на канал.Возвраты: 1 в случае удачного завершения; иначе - 0.Модуль: channels
unstickinvite <invitemask> [channel]
Описание: снимает с приглашения "липучесть" или, если указан канал, "липучка" снимается только с канала.Возвраты: 1 в случае удачного завершения; иначе - 0.Модуль: channels
killchanban <channel> <ban>
Описание: удаляет бан из списка банов канала.Возвраты: 1 в случае удачного завершения; иначе - 0.Модуль: channels
killban <ban>
Описание: удаляет бан из глобального списка банов.Возвраты: 1 в случае удачного завершения; иначе - 0.Модуль: channels
killchanexempt <channel> <exempt>
Описание: удаляет освобождение из списка свобождений канала.Возвраты: 1 в случае удачного завершения; иначе - 0.Модуль: channels
killexempt <exempt>
Описание: удаляет освобождение из глобального списка.Возвраты: 1 в случае удачного завершения; иначе - 0.Модуль: channels
killchaninvite <channel> <invite>
Описание: удаляет приглашение из списка приглашений канала.Возвраты: 1 в случае удачного завершения; иначе - 0.Модуль: channels
killinvite <invite>
Описание: удаляет приглашение из глобального списка приглашений.Возвраты: 1 в случае удачного завершения; иначе - 0.Модуль: channels
ischanjuped <channel>
Возвраты: 1 если канал заблокирован и бот не может на него войти; иначе - 0.Модуль: channels
isban <ban> [channel]
Возвраты: 1 если указанный бан есть в глобальном списке банов; иначе - 0. Если указан канал, то список банов этого канала также проверяется.Модуль: channels
ispermban <ban> [channel]
Возвраты: 1 если указанный бан есть в глобальном списке банов *И* помечен как постоянный; иначе - 0. Если указан канал, то список банов этого канала также проверяется.Модуль: channels
isexempt <exempt> [channel]
Возвраты: 1 если указанное освобождение есть в глобальном списке освобождений; иначе - 0. Если указан канал, то список освобождений этого канала также проверяется.Модуль: channels
ispermexempt <exempt> [channel]
Возвраты: 1 если указанное освобождение есть в глобальном списке освобождений *И* помечено как постоянное; иначе - 0. Если указан канал, то список освобождений этого канала также проверяется.Модуль: channels
isinvite <invite> [channel]
Возвраты: 1 если указанное приглашение есть в глобальном списке приглашений; иначе - 0. Если указан канал, то список приглашений этого канала также проверяется.Модуль: channels
isperminvite <invite> [channel]
Возвраты: 1 если указанное приглагшение есть в глобальном списке приглашений *И* помечено как постоянное; иначе - 0. Если указан канал, то список приглашений этого канала также проверяется.Модуль: channels
isbansticky <ban> [channel]
Возвраты: 1 если указанный бан помечен как "липучий" в глобальном списке банов; иначе - 0. Если указан канал, то список банов этого канала также поверяется.Модуль: channels
isexemptsticky <exempt> [channel]
Возвраты: 1 если указанное освобождение помечено как "липучее" в глобальном списке освобождений; иначе - 0. Если указан канал, то список освобождений этого канала также поверяется.Модуль: channels
isinvitesticky <invite> [channel]
Возвраты: 1 если указанное приглашение помечено как "липучее" в глобальном списке приглашений; иначе - 0. Если указан канал, то список приглашений этого канала также поверяется.Модуль: channels
matchban <nick!user@host> [channel]
Возвраты: 1 если указанный nick!user@host совпадает с баном в глобальном списке банов; иначе - 0. Если указан канал, то список банов этого канала также поверяется.Модуль: channels
matchexempt <nick!user@host> [channel]
Возвраты: 1 если указанный nick!user@host совпадает с освобождением в глобальном списке освобождений; иначе - 0. Если указан канал, то список освобождений этого канала также проверяется.Модуль: channels
matchinvite <nick!user@host> [channel]
Возвраты: 1 если указанный nick!user@host совпадает с приглашением в глобальном списке приглашений; иначе - 0. Если указан канал, то список приглашений этого канала также проверяется.Модуль: channels
banlist [channel]
Возвраты: список глобальных банов, или, если указан канал, - список банов канала. Каждое занесение в список содержит: маску хоста, комментарий, время окончания бана, время добавления, время последней активности и создатель. Время окончания бана устанавливается в формате unix.Модуль: channels
exemptlist [channel]
Возвраты: список глобальных освобождений, или, если указан канал, - список освобождений этого канала. Каждое занесение в список содержит: маску хоста, комментарий, время окончания освобождения, время добавления, время последней активности и создатель. Время окончания освобождения устанавливается в формате unix.Модуль: channels
invitelist [channel]
Возвраты: список глобальных приглашений, или, если указан канал, - список приглашений этого канала. Каждая запись в список содержит: маску хоста, комментарий, время окончания приглашения, время добавления, время последней активности и создатель. Время окончания приглашения устанавливается в формате unix.Модуль: channels
newignore <hostmask> <creator> <comment> [lifetime]
Описание: добавление записей в список игнорирования. 'lifetime' - время игнорирования, по истечении которого запись удаляется. Если 'lifetime' не указана, в силу входит значение, указанное в конфигурационном файле бота. Установка 'lifetime' на 0 указывает на постоянность игнорирования.Возвраты: отсутствуютМодуль: core
killignore <hostmask>
Описание: удаление записи из списка игнорирования.Возвраты: 1 в случае удачного завершения; иначе - 0Модуль: core
ignorelist
Возвраты: список игнорирования. Каждая запись содержит: маску хоста, комментарий, время окончания игнорирования, время добавления, и создатель. Время окончания игнорирования устанавливается в формате unix.Модуль: core
isignore <hostmask>
Возвраты: 1 если игнорируемый находится в списке; иначе - 0.Модуль: core
save
Описание: записывает userfile и channelfile на диск.Возвраты: отсутствуютМодуль: core
reload
Описание: загружает userfile с диска, заменяет более старый в памяти.Возвраты: отсутствуютМодуль: core
backup
Описание: создает простую резервную копию userfile на диск. Если загружен модуль channels, также делает и резервную копию channelfile.Возвраты: отсутствуютМодуль: core
getting-users
Возвраты: 1 если бот в данный момент скачивает userfile с другого бота (и потому, записи пользователей резко меняются); если нет - 0.Модуль: core

3. Функции для управления каналами

channel add <name> [option-list]
Описание: добавляет канал боту для слежения. Полный список возможных опций приведены в файле doc/settings.mod.channels. Обратите внимание, что опции канала должны быть заключены в фигурные скобки.Возвраты: отсутствуютМодуль: channels
channel set <name> <options...>
Описание: устанавливает опции для указанного канала. Полный список возможных опций приведены в файле doc/settings.mod.channels.Возвраты: отсутствуютМодуль: channels
channel info <name>
Возвраты: список параметров указанного канала.Модуль: channels
channel get <name> <setting>
Возвраты: значение устанавливаемой вами опции. Для флагов значение 0 равно отключению (-) и не нулевое - включению (+).Модуль: channels
channel remove <name>
Описание: удаление записи канала из памяти бота и отключение слежения за этим каналом.Возвраты: отсутствуютМодуль: channels
savechannels
Описание: сохранение настроек канала в channelfile, если он определен.Возвраты: отсутствуютМодуль: channels
loadchannels
Описание: повторная загрузка настроек канала из channelfile, если он определен.Возвраты: отсутствуютМодуль: channels
channels
Возвраты: список каналов, записи которых имеются у бота.Модуль: channels
channame2dname <channel-name>
chandname2name <channel-dname>
Описание: эти две функции очень важны для корректной поддержки "!channels". Бот различает описания имени каналов (chan dnames) и реальные имена каналов (chan names). chan dnames определяет нормальное название канала, такое как "!channel". chan name - какой идентификатор использует IRC-сервер для этого канала. Идентификатор состоит из chan dname и префикса с ID; что-то типа "!ABCDEchannel".Для функция бота, таких как isop, isvoice и т.п. вам понадобится знать chan dname. Если вы связываетесь с сервером, обычно вы получаете chan name. Вот это-то как раз и нужно для функции channame2dname.Если у вас имеется только chan dname и вы хотите отправить напрямую исходные серверные команды, используйте функцию chandname2name.КСТАТИ: Для не-!каналов chan dname и chan name - одно и то же.Модуль: irc
isbotnick <nick>
Возвраты: 1 если никнейм совпадает с именем бота; иначе - 0.Модуль: server
botisop [channel]
Возвраты: 1 если бот является оператором на указанном канале (или на каком-либо канале, если не указано); иначе - 0.Модуль: irc
botishalfop [channel]
Возвраты: 1 если бот является полуоператором на указанном канале (или на каком-либо канале, если не указано); иначе - 0.Модуль: irc
botisvoice [channel]
Возвраты: 1 если бот является войсом на указанном канале (или на каком-либо канале, если не указано); иначе - 0.Модуль: irc
botonchan [channel]
Возвраты: 1 если бот находится на указанном канале (или на каком-либо канале, если не указано); иначе - 0.Модуль: irc
isop <nickname> [channel]
Возвраты: 1 если указанный пользователь находится на канале (или на каком-либо канале, если не указано) и имеет статус оператора; иначе - 0.Модуль: irc
ishalfop <nickname> [channel]
Возвраты: 1 если указанный пользователь находится на канале (или на каком-либо канале, если не указано) и имеет статус полуоператора; иначе - 0.Модуль: irc
wasop <nickname> <channel>
Возвраты: 1 если указанный пользователь получил статус оператора/снял статус оператора на канале, имея статус оператора перед изменением режима канала; иначе - 0.Модуль: irc
washalfop <nickname> <channel>
Возвраты: 1 если указанный пользователь получил статус полуоператора/снял статус полуоператора на канале, имея статус полуоператора перед изменением режима канала; иначе - 0.Модуль: irc
isvoice <nickname> [channel]
Возвраты: 1 если указанный пользователь является войсом (+v) на указанном канале (или на каком-либо канале, если не указано); иначе - 0.Модуль: irc
onchan <nickname> [channel]
Возвраты: 1 если указанный пользователь находится на указанном канале (или на каком-либо канале, если не указано); иначе - 0.Модуль: irc
nick2hand <nickname> [channel]
Возвраты: прозвище пользователя на канале. Если канала не указан, бот проверяет все свои каналы. Если имя не найдено, возвращается "". Если имя найдено, но не выдается прозвище, возвращается "*".Модуль: irc
hand2nick <handle> [channel]
Возвраты: имя первого пользователя на указанном канале (если указан), прозвище которого совпадает с nick!user@host; если совпадения не найдено, возвращается "". Если канал не указан, проверяются все каналы.Модуль: irc
handonchan <handle> [channel]
Возвраты: 1 если чей-либо nick!user@host на канале (или на всех каналах бота, если не указано) совпадает с указанным прозвищем; иначе - 0.Модуль: irc
ischanban <ban> <channel>
Возвраты: 1 если указанный бан присутствует в списке банов указанного канала (не список банов канала, находящийся в памяти бота), иначе - 0.Модуль: irc
ischanexempt <exempt> <channel>
Возвраты: 1, если указанное освобождение присутствует в списке освобождений указанного канала (не список освобождений канала, находящийся в памяти бота), иначе - 0.Модуль: irc
ischaninvite <invite> <channel>
Возвраты: 1, если указанное приглашение присутствует в списке приглашений указанного канала (не список приглашений канала, находящийся в памяти бота), иначе - 0.Модуль: irc
chanbans <channel>
Возвраты: список текущих банов канала. Каждый элемент списка имеет форму {<бан> <кем_поставлен> <возраст>}. Возраст измеряется в секундах и исчисляется с момента установки и по момент запроса списка.Модуль: irc
chanexempts <channel>
Возвраты: список текущих освобождений канала. Каждый элемент списка имеет форму {<освобождение> <кем_установлено> <возраст>}. Возраст измеряется в секундах и исчисляется с момента установки и по момент запроса списка.Модуль: irc
chaninvites <channel>
Возвраты: список текущих приглашений канала. Каждый элемент списка имеет форму {<приглашение> <кем_сделано> <возраст>}. Возраст измеряется в секундах и исчисляется с момента установки и по момент запроса списка.Модуль: irc
resetbans <channel>
Описание: удаление всех банов канала, кроме хранимых в памяти бота, и освежение остальных банов, которые могут находится на канале, но отсутствуют.Возвраты: отсутствуютМодуль: irc
resetexempts [channel]
Описание: удаление всех освобождений канала, кроме хранимых в памяти бота, и освежение остальных освобождений, которые могут находится на канале, но отсутствуют.Возвраты: отсутствуютМодуль: irc
resetinvites [channel]
Описание: удаление всех приглашений канала, кроме хранимых в памяти бота, и освежение остальных приглашений, которые могут находится на канале, но отсутствуют.Возвраты: отсутствуютМодуль: irc
resetchan <channel>
Описание: повторное считывание настроек канала с сервера.Возвраты: отсутствуютМодуль: irc
getchanhost <nickname> [channel]
Возвраты: user@host указанного имени пользователя (имя пользователя не влючается в возвращаемый хост). Если канал не указан, бот проверяет все свои каналы. Если пользователь с искомым именем отсутствует на канале(ах), то возвращается "".Модуль: irc
getchanjoin <nickname> <channel>
Возвраты: Отметка времени (в формате unix) о посещении указанным пользователем канала.Модуль: irc
onchansplit <nick> [channel]
Возвраты: 1 если пользователь отсплитился с канала (или какого-другого канала, если не указанно); иначе - 0.Модуль: irc
chanlist <channel> [flags[&chanflags]]
Описание: Описание: глобальные флаги; символ '&' побуждает на поиск флагов канала. Примеры:

{|

|- valign="top" | n | Глобальный владелец |- valign="top" | &n | Владелец канала |- valign="top" | o&m | Глобальный оператор, Мастер канала

|}

Возвраты: список пользователей, находящихся в данный момент на канале бота, которые имеют указанные флаги. Если флаги не заданы, возвращаются все имена пользователей. Пожалуйста, заметьте, что выполняя функцию 'chanlist' после части или знака 'bind', ушедший пользователь будет все еще числиться, поэтому вы можете проверять wasop, isop и т.п.Модуль: irc

getchanidle <nickname> <channel>
Возвраты: количество минут бездействия указанного пользователя; 0, если указанный пользователь отсутствует на канале.Модуль: irc
getchanmode <channel>
Возвраты: строку типа "+ntik key" для указанного канала.Модуль: irc
jump [server [port [password]]]
Описание: переподсоединение на указанный сервер или (если не указано) на следующий сервер из списка серверов бота.Возвраты: отсутствуютМодуль: server
pushmode <channel> <mode> [arg]
Описание: посылает смену режима канала (напр. pushmode #lame +o goober) через систему очереди бота. Все смены режимов будут посланы единожды (в одной строке могут помещаться любые мыслимые комбинации), после завершения скрипта или когда произойдет вызов функции 'pushmode'.Возвраты: отсутствуютМодуль: irc
flushmode <channel>
Описание: немедленная посылка всех, предварительно отправленных, изменений режимов канала на сервер вместо ожидания завершения скрипта (для указанного канала).Возвраты: отсутствуютМодуль: irc
topic <channel>
Возвраты: строка, содержащая текущую тему указанного канала.Модуль: irc
validchan <channel>
Описание: проверка наличия записи указанного канала в памяти бота. Заметьте, что этого делать не обязательно, если бот уже находится на канале.Возвраты: 1, если канал присутствует; иначе - 0.Модуль: channels
isdynamic <channel>
Возвраты: 1, если канал является динамическим; иначе - 0.Модуль: channels
setudef <flag/int/str> <name>
Описание: инициализация указанного пользователем флага канала или настройки. Вы можете использовать их также как и другие флаги/настройки. ВАЖНО: Не забудьте переинициализировать ваши флаги/настройки после рестарта, иначе они будут потеряны.Возвраты: отсутствуютМодуль: channels
renudef <flag/int/str> <oldname> <newname>
Описание: переименование указанного пользователем флага канала или настройки.Возвраты: отсутствуютМодуль: channels
deludef <flag/int/str> <name>
Описание: удаление указанного пользователем флага канала или настройки.Возвраты: отсутствуютМодуль: channels

4. Функции для работы с DCC

putdcc <idx> <text>
Описание: послать текст на указанный dcc.Возвраты: отсутствуютМодуль: core
dccbroadcast <message>
Описание: отправить сообщение каждому, кто сидит на патилайне, во всем ботнете. В форме "*** " для локальных пользователей и "*** (Bot) " для пользователей на других ботах.Возвраты: отсутствуютМодуль: core
dccputchan <channel> <message>
Описание: отправить ваше сообщение каждому на указанном канале в ботнете по вышеописанным формам. Разрешенные каналы от 0 до 99999.Возвраты: отсутствуютМодуль: core
boot <user@bot> [reason]
Описание: скинуть пользователя с патилайнаВозвраты: отсутствуютМодуль: core
dccsimul <idx> <text>
Описание: симуляция набора текста по dcc указанному пользователю. Заметьте, что в v0.9 было возможно симулировать только команды; сейчас команды могут распознаваться префиксом '.' и симулироваться.Возвраты: отсутствуютМодуль: core
hand2idx <handle>
Возвраты: idx (число больше или эквивалентное нулю) для пользователя, дающееся, если пользователь заходит на патилайн в режим чата (даже если он в данный момент на канале или вышел из чата), файлообмена или в управление скрипта. Вернется "-1" , если не найдено idx. Если пользователь использует несколько соединений, вернется idx первого подключения.Модуль: core
idx2hand <idx>
Возвраты: псевдоним пользователя с указанным idx.Модуль: core
valididx <idx>
Возвраты: 1 если присутствует текущий idx; иначе - 0.Модуль: core
getchan <idx>
Возвраты: текущий канал патилайна для пользователя, находящегося на патилайне; "0" указывает его группу патилайна, "-1" на то, что пользователь вышел из чата, и значение от 1 до 99999 приватного канала.Модуль: core
setchan <idx> <channel>
Описание: установка канала пользовательского патилайна. Патилайн не извещает пользователя, что он в данный момент находится уже на новом канале. Может использоваться имя канала (предоставлено в наличии).Возвраты: отсутствуютМодуль: core
console <idx> [channel] [console-modes]
Описание: изменение режима пользовательской dcc консоли как обсолютный режим (типа "mpj") так и просто добавлением/удалением флагов (типа "+pj" или "-moc", или "+mp-c"). Вид канала пользовательской консоли также может быть изменен (в рамках допустимого канала).Возвраты: список, содержащий вид пользовательского (нового) канала и (новых) режимов консоли или ничего, если этот пользователь в данный момент отсутствует на патилайне.Модуль: core
echo <idx> [status]
Описание: включение/выключение пользовательского эха; статус может иметь положение 1 или 0.Возвраты: новое значение эха для указанного пользователя (или текущее значение, если статус был пропущен).Модуль: core
strip <idx> [+/-strip-flags]
Описание: изменение купирующих флагов пользователя.

{|

|- valign="top" | b | удаление всех жирных шрифтов |- valign="top" | c | удаление всех команд управления цветом |- valign="top" | r | удаление всех команд реверсирования |- valign="top" | u | удаление всех подчеркивающих шрифтов |- valign="top" | a | удаление всех ANSI-команд |- valign="top" | g | удаление всех кодов Ctrl-G (звонка)

|}

Возвраты: новые купирующие флаги для указанного пользователя (или текущие флаги, если купирующие флаги были пропущены).Модуль: core

putbot <bot-nick> <message>
Описание: отправка сообщения через ботнет другому боту. Если на другом конце отсутствует скрипт для перехвата сообщения, отправленное сообщение игнорируется.Возвраты: отсутствуютМодуль: core
putallbots <message>
Описание: отправка сообщения через весь ботнет всем ботам. Если на другом конце отсутствует скрипт для перехвата сообщения, отправленное сообщение игнорируется.Возвраты: отсутствуютМодуль: core
killdcc <idx>
Описание: закрытие соединений патилайна или файлобмена.Возвраты: отсутствуютМодуль: core
bots
Возвраты: список ботов, соединенных в данный момент в ботнет.Модуль: core
botlist
Возвраты: список ботов, находящихся в данный момент в ботнете. Каждый пункт списка состоит из четырех элементов: бот, аплинк, версия и статус общего доступа:

{|

|- valign="top" | бот | ник бота в ботнете |- valign="top" | аплинк | бот, к которому подсоединен бот |- valign="top" | версия | текущая версия бота |- valign="top" | статус | "+" если бот с общим доступом; иначе "-"

|}Модуль: core

islinked <bot>
Возвраты: 1 если бот слинкован; иначе - 0.Модуль: core
dccused
Возвраты: число dcc-соединений, используемых в данный момент.Модуль: core
dcclist [type]
Возвраты: список активных соединений, каждый пункт списка содержит шесть элементов:Доступные 'type': chat, bot, files, file_receiving, file_sending, file_send_pending, script, socket (эти соединения еще не 'control'), telnet и server. Timestamp в формате unix.Модуль: core
whom <chan>
Возвраты: список пользователей на ботнете, которые находятся на указанном канале. "0" если по умолчанию - патилайн. Каждый пункт списка содержит шесть элементов: имя, название бота, имя хоста, флаг доступа ('-', '@', '+', или '*'), время бездействия в минутах и сообщение отсутствия (отсутствует, если пользователь не ушел). Если вы указали "*" вместо канала, вернется список всех пользователей с ботнета с дополнительным аргументом, который указывает на канал.Модуль: core
getdccidle <idx>
Возвраты: количество секунд бездействия пользователя на dcc chat/file system/script.Модуль: core
getdccaway <idx>
Возвраты: сообщение отсутствия для пользователя в dcc-чате (или "" если пользователь не настроил сообщение).Модуль: core
setdccaway <idx> <message>
Описание: установка через патилайн пользовательского сообщения отсутствия и пометка его отсутствия. Если установлено "", пользователь помечается как не уходивший.Возвраты: отсутствуютМодуль: core
connect <host> <port>
Описание: исходящее соединение с созданием dcc-сессии. Команды управления следует использовать немедлено после удачного соединения, чтобы ничего не было утеряно.Возвраты: idx нового соединения.Модуль: core
listen <port> <type> [options] [flag]
Описание: открытие прослушивания порта с поддержкой входящих соединений по телнету; type может быть одним из "bots", "all", "users", "script", или "off":
listen <port> bots [mask]
Описание: поддержка соединений только ботов; опционально маска используется для идентификации имен ботов. Если маска начинается с '@', это интерпретируется как маска разрешенных хостов для входящих соединений.Возвраты: номер порта
listen <port> users [mask]
Описание: поддержка соединений только пользователей (не ботов); опционально маска используется для идентификации разрешенных имен. Если маска начинается с '@', это интерпретируется как маска разрешенных хостов для входящих соединений.Возвраты: номер порта
listen <port> all [mask]
Описание: поддержка соединений от всех; опционально маска используется для идентификации разрешенных имен пользователей, ботов. Если маска начинается с '@', это интерпретируется как аска разрешенных хостов для входящих соединений.Возвраты: номер порта
listen <port> script <proc> [flag]
Описание: поддержка соединений, которые расцениваются как процессы. Процесс вызывается с одним параметром: idx нового соединения. Флаг может быть только 'pub', дает возможность подсоединиться боту ко всем.Возвраты: номер порта
listen <port> off
Описание: закрытие прослушивания портаВозвраты: отсутствуютМодуль: core
dccdumpfile <idx> <filename>
Описание: вывод файла из текстовой директории в dcc-чат пользователя. Совпадение флагов используется везде, здесь также работает.Возвраты: отсутствуютМодуль: core

5. Функции для работы с модулем NOTES

notes <user> [numberlist]
Возвраты: "-1" если нет пользователя, "-2", если файл, содержащий записки поврежден или отсутствует. Если порядковый номер не указан, пользователю возвращается число хранящихся записок. В противном случае - список, содержащий информацию о хранящихся записках. Записки хранятся в файле в следующем формате: { }.Модуль: notes
erasenotes <user> <numberlist>
Описание: удаление определенных или всех хранящихся записок для указанного пользователя. '-' удаляет все записки.Возвраты: "-1" если пользователь отсутствует, "-2" если файл, содержащий записки поврежден или отсутствует. "0" если нет ни одной записки или указан номер удаленной.Модуль: notes
listnotes <user> <numberlist>
Описание: список доступных записок вкупе с порядковым номером (напр. "2-4;8;16-")Возвраты: "-1" если пользователь отсутствует, "-2" если файл, содержащий записки поврежден или отсутствует. "0" если нет ни одной записки, - список доступных записок.Модуль: notes
storenote <from> <to> <msg> <idx>
Описание: сохранение записки для последующего прочтения, извещение idx (для отключения извещения указывайте "-1" в поле idx).Возвраты: "0" в случае удачного завершения; не-0 - в случае неудачи.Модуль: notes

6. Функции для работы с модулем ASSOC

assoc <chan> [name]
Описание: установка имени, ассоциируемое с каналом ботнета, если вы указали один.Возвраты: текущее имя для этого канала, если есть.Модуль: assoc
killassoc <chan>
Описание: удаление имени, ассоциируемого с каналом ботнета, если есть. Для удаления всех ассоциаций, используйте 'killassoc &'.Возвраты: отсутствуют.Модуль: assoc

7. Функции для работы с модулем COMPRESS

compressfile [-level <level>] <src-file> [target-file]
uncompressfile <src-file> [target-file]
Описание: сжатие и расжатие файлов. Опции 'level' указывает на метод сжатия. Доступны методы с 0 (минимальное использования CPU, минимальное сжатие) и до 9 (максимальная загрузка CPU и максимальная компрессия). Если вы не указали файл-архив, в который требуется сжать исходный файл, то исходный файл перезаписывается.Возвраты: отсутствуютМодуль: compress
iscompressed <filename>
Описание: определяет является ли указанный сжатый методом gzip. Возвращает "1" если является, "0", если нет и "2" при возникновении какой-либо ошибки при проверке.Возвраты: отсутствуютМодуль: compress

8. Функции для работы с модулем FILESYS

setpwd <idx> <dir>
Описание: изменение директории системных файлов пользователя, аналогична команле 'cd'. Путь до директории может быть относительным или абсолютным.Возвраты: отсутствуютМодуль: filesys
getpwd <idx>
Возвраты: текущая директория системных файлов пользователя.Модуль: filesys
getfiles <dir>
Возвраты: список файлов указанной директории; директория указывается относительно dcc-пути.Модуль: filesys
getdirs <dir>
Возвраты: список поддиректорий указанной директории; директория указывается относительно dcc-пути.Модуль: filesys
dccsend <filename> <ircnick>
Описание: попытка начать пересылку файла указанному нику через dcc; имя файла должно быть указано с полным путем или относительным корневой директории бота.Возвраты:

{|

|- valign="top" | | в случае удачного завершения; |- valign="top" | 1 | таблица dcc полна (слишком много соединений); |- valign="top" | 2 | невозможно открыть сокет для пересылки; |- valign="top" | 3 | файл отсутствует; |- valign="top" | 4 | файл был отложен в очередь для последующей пересылки, после того, как пользователь уменьшит количество соединений для пересылки файлов. |- valign="top" | 5 | включено copy-to-tmp и файл перемещен во временную директорию.

|}

Модуль: transfer

filesend <idx> <filename> [ircnick]
Описание: подобно 'dccsend', за исключением операций с текущей файловой областью пользователя и разрешения использовать относительные пути из текущей пользовательской директории.Возвраты: "0" при неудаче; "1" в случае удачного завершения (как при немедленной отправке, так и при откладывании в очередь).Модуль: filesys
fileresend <idx> <filename> [ircnick]
Описание: функция подобная 'filesend', только он отправляет DCC RESEND вместо DCC SEND, что позволяет пользователям восстанавливать пересылку файла с места обрыва, если их клиент поддерживает этот протокол. ircII/BitchX/etc поддерживают; mIRC - нет.Возвраты: 0 on failure; 1 on success (either an immediate send or a queued send)Модуль: filesys
setdesc <dir> <file> <desc>
Описание: установка описания для файлов в директории системных файлов; директории относительной к dcc-пути.Возвраты: отсутствуютМодуль: filesys
getdesc <dir> <file>
Возвраты: описание файла в файлобласти, если есть.Модуль: filesys
setowner <dir> <file> <handle>
Описание: изменение владельца файла в файлобласти; директории относительной к dcc-пути.Возвраты: отсутствуютМодуль: filesys
getowner <dir> <file>
Возвраты: владелец файла в файлобласти.Модуль: filesys
setlink <dir> <file> <link>
Описание: создание или изменение линкованного файла (файла, который в данный момент присутствует на другом боте); директории относительной dcc-пути.Возвраты: отсутствуютМодуль: filesys
getlink <dir> <file>
Возвраты: линк для линкованного файла, есть есть.Модуль: filesys
getfileq <handle>
Возвраты: список чьей-нибудь файловой очереди; каждый пункт списка состоит из двух элементов: имени файлополучателя и название самого файла.Модуль: transfer
getfilesendtime <idx>
Возвраты: время в формате unixtime начала файловой пересылки или отрицательное число:

{|

|- valign="top" | -1 | пересылок, совпадающих с указанным isx не найдено |- valign="top" | -2 | idx совпадает с тем, кто не осуществлял файловых пересылок

|}Модуль: transfer

mkdir <directory> [<required-flags> [channel]]
Описание: создание директории в файловой области. Разрешено только тем пользователям, чьи флаги позволяет это.Возвраты:

{|

|- valign="top" | | удачное завершение |- valign="top" | 1 | невозможно создать директорию |- valign="top" | 2 | название присутствует, но это не директория |- valign="top" | -3 | невозможно открыть файловую базу данных

|}Модуль: filesys

rmdir <directory>
Описание: удаление директории из файлообласти.Возвраты: 0 при удачном; 1 при неудачном завершенииМодуль: filesys
mv <file> <destination>
Описание: перемещение файла из исходного расположения в указанный. Можно использовать файловые маски, такие как '/incoming.*', указывающие на директорию целиком.Возвраты: Если команда была выполнена - число перемещенных файлов. Иначе - возвращается отрицательное число:

{|

|- valign="top" | -1 | неверное название исходного файла |- valign="top" | -2 | неверное расположение |- valign="top" | -3 | перемещаемый файл уже присутствует |- valign="top" | -4 | совпадений не найдено

|}Модуль: filesys

cp <file> <destination>
Описание: копирование файла из исходного расположения в указанный. Можно использовать файловые маски, такие как '/incoming.*', указывающие на директорию целиком.Возвраты: Если команда была выполнена - число скопированных файлов. Иначе - возвращается отрицательное число:

{|

|- valign="top" | -1 | неверное название исходного файла |- valign="top" | -2 | неверное расположение |- valign="top" | -3 | перемещаемый файл уже присутствует |- valign="top" | -4 | совпадений не найдено

|}Модуль: filesys

getflags <dir>
Возвраты: требуемые флаги для доступа к директории.Модуль: filesys
setflags <dir> [<flags> [channel]]
Описание: установка флагов, требуемых для доступа к директории.Возвраты: 0 в случае удачного завершения; -1 или -3 при неудачеМодуль: filesys

9. Прочие функции

bind <type> <flags> <keyword/mask> [proc-name]
Описание: Вы можете использовать функцию 'bind' для прикрепления Tcl-процедур к различным событиям. Флаги () - флаги на которые надо установить триггер на событие (если прилагается). Имя процесса ('[proc-name]') может быть именем Tcl-процедуры для вызова этой функции (см. ниже формат вызова процедуры). Если имя процесса не указано, привязка на событие ('bind') не добавляется. Вместо этого возвращается текущая привязка на событие (если она stackable, возвращается список текущих привязок на событие).Возвраты: имя добавленной команды или (если имя процесса не указано), список текущих привязок на событие для этой команды.Модуль: core
unbind <type> <flags> <keyword/mask> <proc-name>
Описание: удаление предварительно созданных привязок на событие.Возвраты: имя удаленной команды.Модуль: core
binds [type/mask]
Возвраты: список Tcl-привязок на событие, в котором каждый пункт состоит из пяти элементов: { }Модуль: core
logfile [<modes> <channel> <filename>]
Описание: создание нового лог-файла, в который отражаются изменения режимов указанных каналов. Если лог-файл не указан, возвращается список существующих лог-файлов. "*" указывает на все каналы. Также вы можете изменить режимы и канал присутствующие в лог-файле с помощью этой функции. Установив пустой режим и канал ("") вы прекратите ведение лог-файла.Возвраты: имя созданного лог-файла или, если лог-файл не указан, список лог-файлов типа: {mco * eggdrop.log} {jp #lame lame.log}Модуль: core
maskhost <nick!user@host>
Возвраты: простроение маски на указанную маску хоста ("n!u@1.2.3.4" -> "*!u@1.2.3.*", "n!u@lame.com" -> "*!u@lame.com", "n!u@a.b.edu" -> "*!u@*.b.edu").Модуль: core
timer <minutes> <tcl-command>
Описание: выполнение указанной Tcl-команды по истечении указанного времени (в минутах).Возвраты: идентификатор таймераМодуль: core
utimer <seconds> <tcl-command>
Описание: выполнение указанной Tcl-команды по истечении указанного времени (в секундах).Возвраты: идентификатор таймераМодуль: core
timers
Возвраты: список активных минутных таймеров. Каждый пункт списка содержит число минут, оставшихся до активации; команду, которую следует выполнить; идентификатор таймера.Модуль: core
utimers
Возвраты: список активных секундных таймеров. Каждый пункт списка содержит число минут, оставшихся до активации; команду, которую следует выполнить; идентификатор таймера.Модуль: core
killtimer <timerID>
Описание: удаление минутного таймера из списка.Возвраты: отсутствуютМодуль: core
killutimer <timerID>
Описание: удаление секундного таймера из списка.Возвраты: отсутствуютМодуль: core
unixtime
Возвраты: большое целое число, которое представляет число секунд, прошедших с 00:00 1 января 1970 года (GMT).Модуль: core
duration <seconds>
Возвраты: число секунд, сконвертированных в количество лет, недель, дней, часов, минут и секунд. 804600 секунд тоже самое, что и 1 неделя 2 дня 7 часов 30 минут.Модуль: core
strftime <formatstring> [time]
Возвраты: строка времени, форматированная под стандарт strftime. Если указано время, используется значение указанного времени. Иначе - текущее время.Модуль: core
ctime <unixtime>
Возвраты: форматированная строка даты/времени относительно текущих установок локали с указанной строки в формате unixtime; например "Fri Aug 3 11:34:55 1973".Модуль: core
myip
Возвраты: длинный номер, составленный из IP-адреса бота, как он выглядит в (например) DCC-запросе.Модуль: core
rand <limit>
Возвраты: случайное целое - между 0 и ограниченное - -1.Модуль: core
control <idx> <command>
Описание: удаление idx с патилайна и отправлять все будущие введенные символы на указанную Tcl-функцию. Функцмя будет вызвана с двумя параметрами: idx и вводимый текст. При удачном завершении функция вернет "0", и "1" если контроль над пользователем вернулся к боту. Если поле для вводимого текста оставить пустым (""), это заставит считать, что соединение разорвано и никогда не вызовет killdcc, как если бы случился "invalid idx".Возвраты: отсутствуютМодуль: core
sendnote <from> <to[@bot]> <message>
Описание: симуляция отправки записки одним пользователем другому.Возвраты:

{|

|- valign="top" | | отправка не удалась |- valign="top" | 1 | записка была доставлено локально или отправлена другому боту |- valign="top" | 2 | записка была сохранена локально |- valign="top" | 3 | пользовательский ящик полон |- valign="top" | 4 | Tcl-привязка к событию сработала на записке |- valign="top" | 5 | записка была сохранена по причине отсутствия пользователя

|}

Модуль: core

link [via-bot] <bot>
Описание: попытка линковки к другому боту напрямую. Если вы указали транзитного бота (via-bot), это позволяет транзитному боту линковаться с требуемым.Возвраты: 1 если линк установлен; иначе - 0.Модуль: core
unlink <bot>
Описание: попытка отлинковки бота из ботнета.Возвраты: 1 в случае удачного завершения; иначе - 0.Модуль: core
encrypt <key> <string>
Возвраты: зашифрованная строка (используя текущий загруженный модуль шифрования), кодированная в ASCII, используя base-64.Модуль: encryption
decrypt <key> <encrypted-base64-string>
Возвраты: дешифрованная строка (используя текущий загруженный модуль шифрования).Модуль: encryption
encpass <password>
Возвраты: зашифрованная строка (используя текущий загруженный модуль шифрования).Модуль: encryption
die [reason]
Описание: отправка боту в логфайл фатальной ошибки и последующий выход. Если причина не указана, используется "EXIT".Возвраты: отсутствуютМодуль: core
unames
Возвраты: текущая используемая ботом операционная система.Модуль: core
dnslookup <ip-address/hostname> <proc> [[arg1] [arg2] ... [argN]]
Описание: Эта функция используется для асинхронного запроса dns. Если модуль dns не загружен, эта функция блокируется; к тому же она будет или немедленно возвращаться или немедленно вызывать указанный процесс (т.е. если кэш функции уже заполнен).Так же, как и при завершении запросов, указанный процесс будет вызываться как указано ниже: <proc> <ipaddress> <hostname> <status> [[arg1] [arg2] ... [argN]]если статус равен "1", запрос был удовлетворен и "0", если - нет. Все дополнительные параметры (указанные как arg1, arg2 и argN выше) добавляются к другим параметрам процесса.Возвраты: отсутствуютМодуль: core
md5 <string>
Возвраты: 128-битное MD5 сообщение-сводка указанной строки.Модуль: core
callevent <event>
Описание: ручная установка триггеров на определенное событие. Например: callevent rehash.Возвраты: отсутствуютМодуль: core
traffic
Возвраты: список, содержащий информацию о испозовании ботом траффике в байтах. Каждый пункт содержит пять элементов: тип, входящий траффик сегодня, общий входящий траффик, исходящий траффик сегодня, общий исходящий траффик.Модуль: core
modules
Возвраты: список, содержаший информацию о текущих загруженных модулях бота. Каждый пункт списка содержит три элемента: модуль, версия и зависимости. Каждая зависимость содержит подпункт с названием и версией модуля.Модуль: core
loadmodule <module>
Описание: попытка загрузки указанного модуля.Возвраты: "Already loaded." ("Уже загружен."), если модуль уже загружен, "" в случае удачной загрузки или причина отказа загрузки модуля.Модуль: core
unloadmodule <module>
Описание: попытка выгрузки указанного модуля.Возвраты: "No such module", ("Модуль не найден") если модуль не загружен, иначе - "".Модуль: core
loadhelp <helpfile-name>
Описание: попытка загрузки указанного файла помощи из директории help.Возвраты: отсутствуютМодуль: core
unloadhelp <helpfile-name>
Описание: попытка выгрузки указанного файла помощи.Возвраты: отсутствуютМодуль: core
reloadhelp
Описание: перезагрузка файлов помощи бота.Возвраты: отсутствуютМодуль: core
restart
Описание: обновление настроек бота, прибитие всех таймеров, перезагрузка всех модулей и переподсоелинение бота на следующий сервер в списке.Возвраты: отсутствуютМодуль: core
rehash
Описание: обновление настроек бота.Возвраты: отсутствуютМодуль: core
stripcodes <strip-flags> <string>
Описание: удаление указанных управляющих символов из заданной строки. Купирующие флаги могут быть в любой комбинации из нижеследующего:

{|

|- valign="top" | b | удаление всех жирных шрифтов |- valign="top" | c | удаление всех команд управления цветом |- valign="top" | r | удаление всех команд реверсирования |- valign="top" | u | удаление всех подчеркивающих шрифтов |- valign="top" | a | удаление всех ANSI-команд |- valign="top" | g | удаление всех кодов Ctrl-G (звонка)

|}Возвраты: обработанная строка.Модуль: core

10. Глобальные переменные

ЗАМЕЧАНИЕ: Все переменные конфигурационного файла также являются глобальными.

botnick
Значение: текущее используемое имя бота (например: "Valis", "Valis0" и т.п.)Модуль: server
botname
Значение: текущий nick!server@host, что видит сервер (например: "Valis!valis@crappy.com")Модуль: server
server
Значение: текущее настоящее имя сервера (так, как сервер называет себя) и порт на котором подсоединен бот (например: "irc.math.ufl.edu:6667"). Заметим, что это значение не всегда совпадает с интернет-адресом сервера.Модуль: server
serveraddress
Value: the current server's internet address (hostname or IP) and port bot is connected to. This will correspond to the entry in server list (for example: "eu.undernet.org:6667"). Note that this does not necessarily match the name server calls itself.Модуль: server
version
Значение: текущая версия бота "1.1.2+pl1 1010201 pl1"; первые цифры - текстовая версия, вторые - числовая версия, и все последующие - названия наложенных патчей.Модуль: core
numversion
Значение: текущая циферная версия бота (например: "1010201"). Циферная версия имеет формат "MNNRRPP", где:

{|

|- valign="top" | M | главный номер релиза; |- valign="top" | NN | малый номер релиза; |- valign="top" | RR | номер подрелиза; |- valign="top" | PP | уровень пачта для этого подрелиза.

|}

Модуль: core

uptime
Значение: время в формате unixtime с момента запуска бота.Модуль: core
server-online
Значение: время в формате unixtime с момента соединения бота с текущим сервером.Модуль: server
lastbind
Значение: последняя команда завязки на событии, которая была задействована. Это позволяет вам идентифицировать команду, которая была задействована на событи как процесс Tcl.Модуль: core
isjuped
Значение: 1 если имя бота было захвачено(437); иначе - 0.Модуль: server
handlen
Значение: значение HANDLEN устанавливается в src/eggdrop.h.Модуль: core
config
Значение: имя конфигурационного файла Eggdrop, используемое в данный момент.Модуль: core

11. Привязки

Вы можете использовать команду 'bind' при прикрепления Tcl-процедур к определенным событиям. Например, вы можете написать Tcl-процедуру, которую следует вызывать каждый раз после того, как пользователь произнесет на канале слово "danger".

Некоторые типы привязок помечены как "скученные" ("stackable"). Это значит, что вы можете привязать одновременно разные команды на один триггер. Обычно, к примеру, привязка на событие выглядит следующим образом 'bind msg - stop msg:stop' (пример создает /msg-команду "stop" вызовом Tcl-процесса "msg:stop"), будет перезаписывать любые предыдущие привязки для /msg-команды "stop". Со скученными привязками, типа 'msgm', к примеру, вы можете привязать к событию команду к определенному количеству процессов. Когда привязка сработает, ВСЕ Tcl-процедуры, которые были назначены к этой привязке, активируются.

Для удаления 'bind', пользуйтесь командой 'unbind'. Например, удалить привязку к /msg команде "stop", можно строкой 'unbind msg - stop msg:stop'.

  1. Типы привязок
    1. MSG'bind msg <flags> <command> <proc>
      procname <nick> <user@host> <handle> <text>'
      Описание:используется для /msg-команд. Первое слово "msg" является командой и все последующие - текстовый аргумент.Модуль: server
    2. DCC'bind dcc <flags> <command> <proc>
      procname <handle> <idx> <text>'
      Описание: используется для команд на патилайне; первое слово является командой, а все последующие - текстовым аргументом. idx является верным до тех пор, пока пользователь неотсоединится. После чего idx может использоваться вновь, поэтому будьте осторожны с хранением idx на протяжении длительного периода времени.Модуль: core
    3. FIL'bind fil <flags> <command> <proc>
      procname <handle> <idx> <text>'
      Описание: тоже, что и DCC, за исключением реакции на пользователя, зашедшего в файлобласть, вместо патилайна.Модуль: filesys
    4. PUB'bind pub <flags> <command> <proc>
      procname <nick> <user@host> <handle> <channel> <text>'
      Описание: используется для команд на канале. Первое слово рассматривается как команда, а все последующие как текстовый аргумент.Модуль: irc
    5. MSGM (stackable)'bind msgm <flags> <mask> <proc>
      procname <nick> <user@host> <handle> <text>'
      Описание: поиск совпадений в вводимых через /msg строках текста с указаной маской. Полезно для привязки Tcl-процедур к словам или фразам, встречающимся в тексте. Если процедура возвращает 1, Eggdrop не журналирует сообщение, на котором сработала данная привязка. Привязки MSGM выполняются перед привязками MSG. Если включена опция exclusive-binds, то привязки MSG не будут срабатывать на тексте, являющийся MSGM привязкой.Модуль: server
    6. PUBM (stackable)'bind pubm <flags> <mask> <proc>
      procname <nick> <user@host> <handle> <channel> <text>'
      Описание: практически тоже самое, что и MSGM, за исключением того, что триггеры устанавливаются на канале, а не на /msg-сообщения. служит для установки имени канала и может содержать маску. Также, если строка триггеров является привязкой PUB, то эти же триггеры не могут быть использованы в привязке PUBM.Модуль: irc
    7. NOTC (stackable)'bind notc <flags> <mask> <proc>
      procname <nick> <user@host> <handle> <text> <dest>'
      Описание: в поле указывается имя (имя бота, очевидно) или название канала. может содержать маску. Эта функция рассматривается как нарушение протокола отклика на /notice в IRC, поэтому предназначена только для внутренного использования (ведение лога и т.п). Заметьте, что серверные извещения не являются событиями для NOTC. Если процесс возвращает 1, бот не журналирует сообщение, которое реагирует с привязкой.Новые Tcl-процедуры следует описывать как

proc notcproc {nick uhost hand text {dest ""}} { global botnick; if {$dest == ""} {set dest $botnick} ... } для совместимости.Модуль: server

    1. JOIN (stackable)'bind join <flags> <mask> <proc>
      procname <nick> <user@host> <handle> <channel>'
      Описание: реагирует на чей-либо вход на канал. имеет формат "#channel nick!user@host" и может содержать маску.Модуль: irc
    2. PART (stackable)'bind part <flags> <mask> <proc>
      procname <nick> <user@host> <handle> <channel> <msg>'
      Описание: реагирует когда кто-либо покидает канал. имеет формат "#channel nick!user@host" и может содержать маску. Если прощальное сообщение не указано, имеет вид "".Новые Tcl-процедуры следует описывать как

proc partproc {nick uhost hand chan {msg ""}} { ... } для совместимости.Модуль: irc

    1. SIGN (stackable)'bind sign <flags> <mask> <proc>
      procname <nick> <user@host> <handle> <channel> <reason>'
      Описание: реагирует на singoff или, возможно, кто-то попал в нетсплит и не вернулся. singoff-сообщение является последним аргументом в процедуре. В могут использоваться маски, которые имеют формат '#channel nick!user@host'.Модуль: irc
    2. TOPC (stackable)'bind topc <flags> <mask> <proc>
      procname <nick> <user@host> <handle> <channel> <topic>'
      Описание: реагирует на изменение темы ("топика") канала. В могут использоваться маски, которые имеют формат '#channel nick!user@host'.Модуль: irc
    3. KICK (stackable)'bind kick <flags> <mask> <proc>
      procname <nick> <user@host> <handle> <channel> <target> <reason>'
      Описание: реагирует, когда кого-либо выкидывают с канала. имеет формат '#channel target', где 'target' - имя пользователя, подвергнувшегося выкидыванию (может содержать маски). Процедура вызывается с имя, user@host и прозвище вышибалы, плюс название канала, имя провинившегося пользователя и причина; игнорируется.Модуль: irc
    4. NICK (stackable)'bind nick <flags> <mask> <proc>
      procname <nick> <user@host> <handle> <channel> <newnick>'
      Описание: реагирует на смену имени. имеет формат '#channel newnick' и может содержать маски. Канал может быть "*", если пользователь не находится на канале (обычно, бот еще не на канале).Модуль: irc
    5. MODE (stackable)'bind mode <flags> <mask> <proc>
      proc-name <nick> <user@host> <handle> <channel> <mode-change> <target>'
      Описание: поломалось 'mode-change' в части этих компонентов, поэтому 'mode-change' будет всегда изменяться в одиночку, также как "+m" или "-o". 'victim' покажет аргумент изменения режима (для o/v/b/e/I) или "", если была установка режима без аргумента. Поле 'flags' игнорируется. Бот автоматически распознает изменение режима ПОСЛЕ всех вызванных совпадающих Tcl-процедур. Поле 'mask' имеет формат '#channel +/-modes' и может содержать маски.Если рассматривать режим сервера, то 'nick' будет "", 'user@host' - названием сервера, а 'handle' - "*". Заметьте, что 'victim' было добавлено в 1.3.17 и скрипты, написанные для версий до 1.3.2, работать не будут. Простое исправление (написанное guppy) в следующем примере: Заметим, что 'target' было добавлено в 1.3.17 и не будет работать в предыдущих версиях Eggdrop. Так же обратите внимание, что режим привязок был полностью неработоспособным в 1.3.17 и только в 1.3.18 это было исправлено. Многие привязки полностью не срабатывали в 1.3.17.Простой пример (написанный guppy) в следующем примере.Старый скрипт выглядел следующим образом:

bind mode - * mode_proc proc mode_proc {nick uhost hand chan mode} { ... }

Для того, чтобы сделать его работающим в 1.3.23+ и оставить совместимым со старыми ботами, делаем так: bind mode - * mode_proc_fix proc mode_proc_fix {nick uhost hand chan mode {target ""}} { if {$target != ""} {append mode " $target"} mode_proc $nick $uhost $hand $chan $mode } proc mode_proc {nick uhost hand chan mode} { ... } Модуль: irc

    1. CTCP (stackable)'bind ctcp <flags> <keyword> <proc>
      proc-name <nick> <user@host> <handle> <dest> <keyword> <text>'
      Описание: будет именем (именем бота, очевидно) или названием канала. В указывается ctcp-команда (которая может содержать маски), может остаться пустым. Если процедура возвращает "0", бот попытается перехватить обработку ctcp-команды.Модуль: server
    2. CTCR (stackable)'bind ctcr <flags> <keyword> <proc>
      proc-name <nick> <user@host> <handle> <dest> <keyword> <text>'
      Описание: тоже самое, что и CTCP, но реагирует только на ctcp-ответ (ctcp вставляется в извещение вместо PRIVMSG)Модуль: server
    3. RAW (stackable)'bind raw <flags> <keyword-mask> <proc>
      procname <from> <keyword> <text>'
      Описание: предыдущие версии Eggdrop требовали перекомпиляции для включения этой привязки на событие, но теперь она стандартна. может содержать как числа, типа "368", так и ключевое слово, напр. "PRIVMSG. В поле может быть имя сервера или исходный пользователь (в зависимости от ); поле игнорируется. Последовательность аргументов идентична последовательности, которую IRC-сервер отправляет боту. Предварительная обработка только разъединяет их, по отдельности хватает только на определение . Если процедура возвращает "1", Eggdrop не обрабатывает далее строку (значит, что ваш бот ведет себя иногда довольно странно).Модуль: server
    4. BOT'bind bot <flags> <command> <proc>
      proc-name <from-bot> <command> <text>'
      Описание: реагирует на сообщение, пришедшее с другого бота в ботнет. Первое слово является командой и следующим за ней аргументов; поле игнорируется.Модуль: core
    5. CHON (stackable)'bind chon <flags> <mask> <proc>
      proc-name <handle> <idx>'
      Описание: когда кто-либо впервые входит на патилайн через dcc-чат или телнет, эта привязка реагирует перед тем, как этот кто-либо присоединится к чат-каналу (да-да, вы можете изменить канал в процедуре 'chon'). В поле указывается прозвище и поддерживаются маски. Эта процедура НЕ реагирует на то, что кто-либо вернулся из файлобласти и т.п.Модуль: core
    6. CHOF (stackable)'bind chof <flags> <mask> <proc>
      proc-name <handle> <idx>'
      Описание: срабатывает, когда кто-либо покидает патилайн с последующим отсоединением от бота. В поле указывается прозвище и поддерживаются маски. Заметьте, что соединение может прерваться пользователем, так что не посылайте вывод информации на idx.Модуль: core
    7. SENT (stackable)'bind sent <flags> <mask> <proc>
      proc-name <handle> <nick> <path/to/file>'
      Описание: после того, как пользователь удачно скачает файл с бота, эта привязка сработает. Поле содержит прозвише пользователя, который инициировал пересылку, и поддерживает маски. - текущий получатель (на IRC) файла. В поле указывается относительный путь до dcc-директории (если пересылка файла начинается вызовом скрипта к 'dccsend', в описываемом случае точный путь указывается в вызове 'dccsend').Модуль: transfer
    8. RCVD (stackable)'bind rcvd <flags> <mask> <proc>
      proc-name <handle> <nick> <path/to/file>'
      Описание: реагирует на удачную закачку файла пользователем. В поле указывается пользовательское прозвище. содержит имя пользователя, который закачивает файл. - окончательный относительный путь перемещения файла, располагаемый в dcc-директории (обычно, ваша директория входящих файлов).Модуль: transfer
    9. CHAT (stackable)'bind chat <flags> <mask> <proc>
      proc-name <handle> <channel#> <text>'
      Описание: когда кто-нибудь произносит что-либо в ботнете, это вызывает реакцию данной процедуры. Поле игнорируется; содержит прозвище пользователя на боте (DronePup) или другого бота (Eden@Wilde) и поэтому вы не можете ответить на записанного локально пользователя. В поле 'mask' указывается текстовая строка, и поддерживаются маски.NOTE: Если БОТ сказал что-либо на ботнете, то вместо описанной привязки вызывается BCST.Модуль: core
    10. LINK (stackable)'bind link <flags> <mask> <proc>
      proc-name <botname> <via>'
      Описание: реагирует на линковку бота в ботнет. это имя бота, которым он линкуется в ботнет; - транзитный бот. проверяет botnetnick линкующегося бота и поддерживает маски. Поле игнорируется.Модуль: core
    11. DISC (stackable)'bind disc <flags> <mask> <proc>
      proc-name <botname>'
      Описание: реагирует на рассоединение бота с ботнетом по какой-либо причине. Похоже на процедуру линковки, игнорируются; проверяет botnetnick отлинковывающегося бота, маски поддерживаются.Модуль: core
    12. SPLT (stackable)'bind splt <flags> <mask> <proc>
      procname <nick> <user@host> <handle> <channel>'
      Описание: реагирует на уход кого-либо с канала в нетсплит. Конечно, это может быть расценено за фальшивую тревогу (очень просто сделать поддельный нетсплит singoff-сообщением в некоторых сетях); может содержать маски и имеет формат '#channel nick!user@host'. Любой, кто вызовет SPLT, вызовет реакцию на REJN или SIGN не позднее wait-split-минут (указываемые в конфигурационном файле).Модуль: irc
    13. REJN (stackable)'bind rejn <flags> <mask> <proc>
      procname <nick> <user@host> <handle> <channel>'
      Описание: кто-либо, кто после сплита заново зашел на канал. может содержать маски и имеет формат '#channel nick!user@host'.Модуль: irc
    14. FILT (stackable)'bind filt <flags> <mask> <proc>
      procname <idx> <text>'
      Описание: пользователи патилайна и файловой области могут послать текст через FILT перед обработкой. Если процедура вернет пустую строку, текст продолжит обработку. Иначе бот использует вернувшийся текст из процедуры и продолжит его обработку.Модуль: core
    15. NEED (stackable)'bind need <flags> <mask> <proc>
      procname <channel> <type>'
      Описание: эта привязка на событие подобна случаю, когда бот просит статус оператора или ключ к каналу. могут быть: op, unban, invite, limit и key; имеет формат '#channel type' и допускает использование масок. игнорируется.Пример:bind need - "% op" needop < handles only need op
      bind need - "*" needall < handles all needsМодуль: irc
    16. FLUD (stackable)'bind flud <flags> <type> <proc>
      procname <nick> <user@host> <handle> <type> <channel>'
      Описание: любой флуд, засеченный через настройки флуд-контроля (типа 'flood-ctcp') обрабатывается этой процедурой. Если процедура вернула "1", то никаких действий флуд не вызывает; если процедура вернула "0", бот применяет свое обычное для флуда "наказание". Типы флуда: pub, msg, join или ctcp (могут попасть под маску "*"); поле игнорируется.Модуль: server
    17. NOTE (stackable)'bind note <flags> <mask> <proc>
      procname <from> <to> <text>'
      Описание: входящие записки (как с патилайна кого-нибудь в IRC так и с другого бота в ботнете) вызывают реакцию этой процедуры. Если привязка отсутствует, бот не будет обрабатывать записки. Поле должно быть строго указанным (никаких масок), но регистр не важен; поле игнорируется.Модуль: core
    18. ACT (stackable)'bind act <flags> <mask> <proc>
      proc-name <handle> <channel#> <action>'
      Описание: когда кто-либо выполняет действие на ботнете, это вызывает реакцию текущей процедуры. игнорируются; отлавливает текст действия и может содержать маски.Модуль: core
    19. WALL (stackable)'bind wall <flags> <mask> <proc>
      proc-name <handle> <msg>'
      Описание: когда бот получает wallops, возникает реакция этой процедуры. Поле игнорируется; отлавливает текст wallops-сообщения. Заметим, что исходя из RFC, имя сервера показывается в том же формате, что и исходное сообщение, некоторые IRCd отсылают в формате "nick!user@host", и Eggdrop его не обрабатывает, а просто передает привязке так, как оно есть. Если процесс возвращает 1, Eggdrop не журналирует сообщение, на которое сработала привязка.Модуль: server
    20. BCST (stackable)'bind bcst <flags> <mask> <proc>
      proc-name <botname> <channel#> <text>'
      Описание: когда бот отсылает сообщение всему ботнету (см. 'dccbroadcast' выше), возникает реакция этой процедуры. Поле игнорируется; отлавливает текст и может содержать маски. Аргумент "channel" всегда будет "-1".Это так же происходит, если БОТ (не человек, как в отношении с привязкой CHAT) что-нибудь произносит на канале посредством команды. В этом случае аргумент "channel" будет реальным, а не "-1".Модуль: core
    21. CHJN (stackable)'bind chjn <flags> <mask> <proc>
      proc-name <botname> <handle> <channel#> <flag> <idx> <user@host>'
      Описание: реагирует на чей-либо вход на канал ботнета. отлавливает название канала и может содержать маски. В поле указывается один из: * (владелец), + (мастер), @ (оператор) или % (мастер ботнета).Модуль: core
    22. CHPT (stackable)'bind chpt <flags> <mask> <proc>
      proc-name <botname> <handle> <idx> <channel#>'
      Описание: реагирует на чей-либо выход с канала ботнета. Поле игнорируется; отлавливает название канала и может содержать маски.Модуль: core
    23. TIME (stackable)'bind time <flags> <mask> <proc>
      proc-name <minute> <hour> <day> <month> <year>'
      Описание: позволяет вызывать процедуры по расписанию. содержит 5 разделенных пробелами целых значений формы "минуты часы дни месяцы годы". Минуты, часы, дни, месяцы содержат значение из двух цифр (нулей); год в любом случае имеет длину в четыре символа. Поле 'flags' игнорируется.Модуль: core
    24. AWAY (stackable)'bind away <flags> <mask> <proc>
      proc-name <botname> <idx> <text>'
      Описание: реагирует на чей-либо уход или возвращение на ботнет. В поле указывается причина (если причина не указывается, возвращается текст ""). отлавливает botnetnick бота, к которому подсоединен пользователь и может содержать маски. Поле игнорируется.Модуль: core
    25. LOAD (stackable)'bind load <flags> <mask> <proc>
      proc-name <module>'
      Описание: реагирует на загрузку модуля. содержит имя загружаемого модуля и поддерживает маски; поле игнорируется.Модуль: core
    26. UNLD (stackable)'bind unld <flags> <mask> <proc>
      proc-name <module>'
      Описание: реагирует на выгрузку модуля. содержит имя выгружаемого модуля и поддерживает маски; поле игнорируется.Модуль: core
    27. NKCH (stackable)'bind nkch <flags> <mask> <proc>
      proc-name <oldhandle> <newhandle>'
      Описание: реагирует на изменение прозвища локального пользователя (в userfile). отлавливает старое прозвище пользователя и может содержать маски; поле игнорируется.Модуль: core
    28. EVNT (stackable)'bind evnt <flags> <type> <proc>
      proc-name <type>'
      Описание: реагирует на одно из событий. Поле игнорируется; доступные значения:

      {|

|- valign="top" | sighup | вызывается при kill -HUP |- valign="top" | sigterm | вызывается при kill -TERM |- valign="top" | sigill | вызывается при kill -ILL |- valign="top" | sigquit | вызывается при kill -QUIT |- valign="top" | save | вызывается при сохранении userfile |- valign="top" | rehash | вызывается после команды rehash (обновление настроек бота) |- valign="top" | prerehash | вызывается перед командой rehash |- valign="top" | prerestart | вызывается перед рестартом |- valign="top" | logfile | вызывается при суточном переключении лог-файлов |- valign="top" | loaded | вызывается при загрузке бота |- valign="top" | userfile-loaded | вызывается после загрузки userfile

|}

{|

|- valign="top" | connect-server | вызывается перед подсоединением к IRC-серверу |- valign="top" | init-server | вызывается при соединении с IRC-сервером |- valign="top" | disconnect-server | вызывается при рассоединении с IRC-сервером

|}

Модуль: core

    1. LOST (stackable)'bind lost <flags> <mask> <proc>
      proc-name <handle> <nick> <path> <bytes-transferred> <length-of-file>'
      Описание: реагирует на обрыв пересылки DCC SEND, подобно тому, когда соединение разрывается до окончания пересылки/получения данных. В основном случается при обрыве пользователем.Модуль: transfer
    2. TOUT (stackable)'bind tout <flags> <mask> <proc>
      proc-name <handle> <nick> <path> <bytes-transferred> <length-of-file>'
      Описание: реагирует при таймауте при пересылке DCC SEND. Это может случаться по причине отсутствия подтверждения на dcc-соединение или остановке пересылке данных по какой-либо причине.Модуль: transfer
  1. Возвращаемые значенияРазличные привязки на события привлекают внимание своими возвратами от процедуры (используя формат 'return <значение>'). Обычно значение имеет вид "0" или "1", а пустое значение расценивается как "0". Будьте внимательны, если вы пропустите значение возврата, процедурой вернется результат последней запущенной Tcl-команды. И это не совсем похоже на тот результат, который вы ожидали (это такая причуда Tcl).Ниже приведен список привязок на событие, которые используют возвращаемые значения процедур, на которые реагируют:
    1. MSGВозвращает "1" для записи в лог факт вызова команды таким образом:

      (nick!user@host) !handle! command

    2. DCCВозвращает "1" для записи в лог факт вызова команды таким образом:

      #handle# command

    3. FILВозвращает "1" для записи в лог факт вызова команды таким образом:

      #handle# files: command

    4. PUBВозвращает "1" для записи в лог факт вызова команды таким образом:

      <<nick>> !handle! command

    5. CTCPВозвращает "1" на запрос бота не обрабатывать CTCP-команду к нему. Иначе позволяет отсылать отклик на CTCP (возможно сообщение об ошибке, если бот не знает куда его деть).
    6. FILTВозвращает "" указывая на обработку текста и бот просто игнорирует его. В противном случае бот обойдется с текстом как с любым другим.
    7. FLUDВозвращает "1" указывая боту не производить никаких действия на флуд. В противном случае бот приводит в силу обычные "наказания".
    8. RAWВозвращает "1" запрещая боту обрабатывать текст с сервера. Это может затрагивать выполнение работы ботом, указывая ему пропустить то, что он обычно обрабатывает -- вы были предупреждены.
    9. CHONВозвращает "1" запрещая обрабатывать событие входа на патилайн.
    10. CHOFВозвращает "1" запрещая боту обрабатывать событие выхода с патилайна.
    11. WALLВозвращает "1" для запрета записи в лог сообщения, на которое реагирует привязка.
    12. NOTEВозвращает "1" для того, чтобы Eggdrop не обрабатывал последующую записку. Это включает в себя кучу привязок, которые начнут выполняться одна за одной так, словно бот только и предназначен, чтобы обрабатывать записки.
    13. MSGMВозвращает "1" для запрета записи в лог сообщения, на которое реагирует привязка.
    14. PUBMВозвращает "1" для запрета записи в лог сообщения, на которое реагирует привязка.
    15. NOTCВозвращает "1" для запрета записи в лог сообщения, на которое реагирует привязка.

12. Процедуры управления

Используя команду 'control' вы можете отдать DCC-соединение (или исходящее TCP-соединение) в управление скриптом. Весь полученный с соединения текст отправляется на указанную вами процедуру. Весь исходящий текст следует отправлять с 'putdcc'.

Процедура управления вызывается со следующими параметрами:

procname <idx> <input-text>

Контрольная процедура вызывается с 2-мя аргументами - номеров каналаи пришедшим текстом (целая строка, без символов перевода каретки). Связь между каналом и процедурой живет до закрытия канала, а потом процедуру никто не вызывает (если только ее опять не поверят или не используют для контроля многих каналов).

Для сообщения котрольной процедуре, что канал был закрыт, ее вызывают с параметрами номера канала с пустым вторым параметром, т.е. строкой "". Это бывает только, когда канал уже был закрыт. Т.о. через контрольную процедуру никогда нельзя узнать, что в канал писали пустые строка. Процедуре передают только не пустые строки и целиком за один раз. Когда прислали "" канал уже закрыт и ничего нельзя туда писать (или пытаться закрыть по killdcc).

Если вы хотите вернуть ручной контроль вашего соединения обратно боту, ваш процесс должен вернуть "1". Иначе, возврат "0" оставит контроль.

13. TCP соединения

Eggdrop позволяет вам создавать два типа TCP-соединений ("телнет"): исходящие и входящие. Для исходящих соединений вам следует указать удаленный хост и порт для соединения с ним. Для входящих соединений вам требуется указать только порт для прослушивания.

Все соединения являются*управляемые событием*. Это значит, что бот реагирует вашими процедурами, когда что-либо случается на соединении и ваша процедура ожидает возврата так, как только это возможно. Ожидания в процедуре для бОльшего ввода нет никакого.

Для инициирования исходящего соединения, используйте:

set idx [connect <hostname> <port>]

$idx теперь содержит новый DCC-ввод для исходящего соединения.

Все соединения используют неблокируемый (называемый "асинхронным", что ошибочно) ввод/вывод. Не вдаваясь в подробности, все это можно выразить в следующем:

  • соединение происходит не мгновенно, а откладывается
  • если соединение прервано, канал имеет флаг EOF, что можно проверить по команде EOF

Команда 'connect' может вернуть ошибку, если указанное вами имя хоста не откликается (это рассматривается как "DNS error"). В противном случае будет расценено как успешное выполнение. Если соединение прервано, вы немедленно получите EOF.

Правильней после вызова команды 'connect' вам следует установить 'control' для нового idx (см. выше). После этого соединение станет обычным DCC-соединением, которое будет контроллироваться скриптом. Если вы вернете "1" с контрольной процедуры (указывая на то, что вы хотите вернуть управление боту), бот просто закроет соединение и избавится от него. Другие команды, что работают на нормальных DCC-соединениях, типа 'killdcc' и 'putdcc' будут также работать на этом idx. Команда 'killdcc' будет обрывать свое выполнение с "invalid idx", если вы попробуете использовать ее на закрытом сокете.

Для создания прослушиваемого порта используйте:

listen <port> script <proc>

Процедуру следует обозначить как:

procname <newidx>

Например:


  listen 6687 script listen:grab

  proc listen:grab {newidx} {
    control $newidx listen:control
  }

Когда на порту 6687 произойдет новое соединение, Eggdrop создаст новый idx для соединения. Этот idx направлен в 'listen:grab'. Процедура немедленно направляет этот idx под контроль. Однажды вызванный 'listen:grab' idx ведет себя подобно исходящему соединению.

Наилучший способ научиться использовать эти команды, это найти скрипт, который их использует и осторожно ему следовать. К тому же, это даст вам хорошее начало.

14. Символы, используемые в масках

Многие привязки на события используют символы подстановки в аргументах. Есть четыре специальных символа:

?

заменяет любой одиночный символ

*

заменяет 0 или больше символов любого типа

%

заменяет 0 или больше символов, не содержащих пробелы (может использоваться для поиска совпадения по одному слову)

~

заменяет 1 или больше символов пробела (может использоваться для слов, разделенных пробелами)


1997 Robey Pointer
1999 - 2006 Eggheads Development Team Eggheads Development Team
2003-2004, 2005-2006, 2007 Перевод vadim s. sabinich [Blog of the free translator]