yandex

Сибирь. Сабынич. Айти

о природе, личной жизни и информационных технологиях

Tcl-команды Eggdrop


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

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

  1. Функции для отправки серверу или в логи команд/сообщений
  2. Функции для работы с базой пользователей
  3. Функции для управления каналами
  4. Функции для работы с DCC
  5. Функции для работы с модулем NOTES
  6. Функции для работы с модулем ASSOC
  7. Функции для работы с модулем COMPRESS
  8. Функции для работы с модулем FILESYS
  9. Прочие функции
  10. Глобальные переменные
  11. Bind

    1. Типы привязок
    2. Возвращаемые значения
  12. Процедуры управления
  13. TCP-соединения
  14. Символы, используемые в масках

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]). '&' обозначает "и", '|' – "или". (имеется ввиду, что можно запросить список пользователей, имеющих определенный флаг. Про пользовательские флаги см. Пользователи и флаги — прим. mef)

Модуль: core

passwdok <handle> <pass>

Описание: проверка пользовательского пароля. Проверка против пароля "" (пустая строка) или "-" исключает возможность отсутствия пароля у пользователя.

Возвраты: 1 если пароль пользователя совпадает; иначе – 0.

Модуль: core

getuser <handle> <entry-type> [extra info]

Описание: интерфейс к новой общей поддержке userfile. Допустимые вводимые значения:

BOTFL

возвращает текущие флаги, установленные для пользователя ботом.

BOTADDR

возвращает список, содержащий адрес бота, порт телнета и порт бота.

HOSTS

возвращает список хостов для пользователя.

LASTON

возвращает список, содержащий время (в формате unix) последней встречи с пользователем и место встречи (под "встречей" следует понимать тот момент, когда пользователь зашел на канал с ботом или на патилайн бота; т.е попал в логи бота — прим. mef). 'LASTON #channel' вернет время последнего посещения канала или 0, если информация об этом отсутствует.

INFO

возвращает глобальное пользовательское приветствие.

XTRA

возвращает дополнительную пользовательскую информацию.

COMMENT

возвращает комментарий для пользователя, видимый только мастером.

EMAIL

возвращает пользовательский адрес электронной почты.

URL

возвращает пользовательскую ссылку на интернет-сайт.

HANDLE

возвращает пользовательский псевдоним так, как он сохранен в userfile.

PASS

возвращает зашифрованный пользовательский пароль.

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

Модуль: core

setuser <handle> <entry-type> [extra info]

Описание: эта функция аналогична функции getuser. Она позволяет вам устанавливать различные значения, которые приведены ниже. И которые также совпадают с вышеописанной функцией.

HOSTS

если использовать без третьего аргумента, все хосты для пользователя будут удалены. Иначе добавлены маска хоста *1* :P.

LASTON

Настройка имеет три вариации. "setuser <handle> LASTON <unixtime> <place>" устаналивает глобальное время LASTON, "setuser <handle> LASTON, "setuser <handle> LASTON <unixtime>" устанавливает глобальное время LASTON (оставляя поле <place> пустым) и "setuser<handle> LASTON <unixtime> <channel>" устанавливает пользовательское время LASTON для канала (если это действительный канал).

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]]

Описание: Описание: глобальные флаги; символ '&' побуждает на поиск флагов канала. Примеры:

n

Глобальный владелец

&n

Владелец канала

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]

Описание: изменение купирующих флагов пользователя.

b

удаление всех жирных шрифтов

c

удаление всех команд управления цветом

r

удаление всех команд реверсирования

u

удаление всех подчеркивающих шрифтов

a

удаление всех ANSI-команд

g

удаление всех кодов Ctrl-G (звонка)

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

Модуль: core

putbot <bot-nick> <message>

Описание: отправка сообщения через ботнет другому боту. Если на другом конце отсутствует скрипт для перехвата сообщения, отправленное сообщение игнорируется.

Возвраты: отсутствуют

Модуль: core

putallbots <message>

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

Возвраты: отсутствуют

Модуль: core

killdcc <idx>

Описание: закрытие соединений патилайна или файлобмена.

Возвраты: отсутствуют

Модуль: core

bots

Возвраты: список ботов, соединенных в данный момент в ботнет.

Модуль: core

botlist

Возвраты: список ботов, находящихся в данный момент в ботнете. Каждый пункт списка состоит из четырех элементов: бот, аплинк, версия и статус общего доступа:

бот

ник бота в ботнете

аплинк

бот, к которому подсоединен бот

версия

текущая версия бота

статус

"+" если бот с общим доступом; иначе "-"

Модуль: 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; имя файла должно быть указано с полным путем или относительным корневой директории бота.

Возвраты:

0

в случае удачного завершения;

1

таблица dcc полна (слишком много соединений);

2

невозможно открыть сокет для пересылки;

3

файл отсутствует;

4

файл был отложен в очередь для последующей пересылки, после того, как пользователь уменьшит количество соединений для пересылки файлов.

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 начала файловой пересылки или отрицательное число:

-1

пересылок, совпадающих с указанным isx не найдено

-2

idx совпадает с тем, кто не осуществлял файловых пересылок

Модуль: transfer

mkdir <directory> [<required-flags> [channel]]

Описание: создание директории в файловой области. Разрешено только тем пользователям, чьи флаги позволяет это.

Возвраты:

0

удачное завершение

1

невозможно создать директорию

2

название присутствует, но это не директория

-3

невозможно открыть файловую базу данных

Модуль: filesys

rmdir <directory>

Описание: удаление директории из файлообласти.

Возвраты: 0 при удачном; 1 при неудачном завершении

Модуль: filesys

mv <file> <destination>

Описание: перемещение файла из исходного расположения в указанный. Можно использовать файловые маски, такие как '/incoming.*', указывающие на директорию целиком.

Возвраты: Если команда была выполнена – число перемещенных файлов. Иначе – возвращается отрицательное число:

-1

неверное название исходного файла

-2

неверное расположение

-3

перемещаемый файл уже присутствует

-4

совпадений не найдено

Модуль: filesys

cp <file> <destination>

Описание: копирование файла из исходного расположения в указанный. Можно использовать файловые маски, такие как '/incoming.*', указывающие на директорию целиком.

Возвраты: Если команда была выполнена – число скопированных файлов. Иначе – возвращается отрицательное число:

-1

неверное название исходного файла

-2

неверное расположение

-3

перемещаемый файл уже присутствует

-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>

Возвраты: простроение маски на указанную маску хоста ("[email protected]" -> "*[email protected].*", "[email protected]" -> "*[email protected]", "[email protected]" -> "*!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>

Описание: симуляция отправки записки одним пользователем другому.

Возвраты:

0

отправка не удалась

1

записка была доставлено локально или отправлена другому боту

2

записка была сохранена локально

3

пользовательский ящик полон

4

Tcl-привязка к событию сработала на записке

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>

Описание: удаление указанных управляющих символов из заданной строки. Купирующие флаги могут быть в любой комбинации из нижеследующего:

b

удаление всех жирных шрифтов

c

удаление всех команд управления цветом

r

удаление всех команд реверсирования

u

удаление всех подчеркивающих шрифтов

a

удаление всех ANSI-команд

g

удаление всех кодов Ctrl-G (звонка)

Возвраты: обработанная строка.

Модуль: core

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

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

botnick

Значение: текущее используемое имя бота (например: "Valis", "Valis0" и т.п.)

Модуль: server

botname

Значение: текущий nick!server@host, что видит сервер (например: "[email protected]")

Модуль: 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", где:

M

главный номер релиза;

NN

малый номер релиза;

RR

номер подрелиза;

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

    8. JOIN (stackable)

      bind join <flags> <mask> <proc>
      procname <nick> <user@host> <handle> <channel>

      Описание: реагирует на чей-либо вход на канал. '' имеет формат "#channel nick!user@host" и может содержать маску.

      Модуль: irc

    9. 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

    10. SIGN (stackable)

      bind sign <flags> <mask> <proc>
      procname <nick> <user@host> <handle> <channel> <reason>

      Описание: реагирует на singoff или, возможно, кто-то попал в нетсплит и не вернулся. singoff-сообщение является последним аргументом в процедуре. В '' могут использоваться маски, которые имеют формат '#channel nick!user@host'.

      Модуль: irc

    11. TOPC (stackable)

      bind topc <flags> <mask> <proc>
      procname <nick> <user@host> <handle> <channel> <topic>

      Описание: реагирует на изменение темы ("топика") канала. В '' могут использоваться маски, которые имеют формат '#channel nick!user@host'.

      Модуль: irc

    12. KICK (stackable)

      bind kick <flags> <mask> <proc>
      procname <nick> <user@host> <handle> <channel> <target> <reason>

      Описание: реагирует, когда кого-либо выкидывают с канала. '' имеет формат '#channel target', где 'target' – имя пользователя, подвергнувшегося выкидыванию (может содержать маски). Процедура вызывается с имя, user@host и прозвище вышибалы, плюс название канала, имя провинившегося пользователя и причина; '' игнорируется.

      Модуль: irc

    13. NICK (stackable)

      bind nick <flags> <mask> <proc>
      procname <nick> <user@host> <handle> <channel> <newnick>

      Описание: реагирует на смену имени. '' имеет формат '#channel newnick' и может содержать маски. Канал может быть "*", если пользователь не находится на канале (обычно, бот еще не на канале).

      Модуль: irc

    14. 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

    15. CTCP (stackable)

      bind ctcp <flags> <keyword> <proc>
      proc-name <nick> <user@host> <handle> <dest> <keyword> <text>

      Описание: '' будет именем (именем бота, очевидно) или названием канала. В '' указывается ctcp-команда (которая может содержать маски), '' может остаться пустым. Если процедура возвращает "0", бот попытается перехватить обработку ctcp-команды.

      Модуль: server

    16. CTCR (stackable)

      bind ctcr <flags> <keyword> <proc>
      proc-name <nick> <user@host> <handle> <dest> <keyword> <text>

      Описание: тоже самое, что и CTCP, но реагирует только на ctcp-ответ (ctcp вставляется в извещение вместо PRIVMSG)

      Модуль: server

    17. RAW (stackable)

      bind raw <flags> <keyword-mask> <proc>
      procname <from> <keyword> <text>

      Описание: предыдущие версии Eggdrop требовали перекомпиляции для включения этой привязки на событие, но теперь она стандартна. '' может содержать как числа, типа "368", так и ключевое слово, напр. "PRIVMSG. В поле '' может быть имя сервера или исходный пользователь (в зависимости от ''); поле '' игнорируется. Последовательность аргументов идентична последовательности, которую IRC-сервер отправляет боту. Предварительная обработка только разъединяет их, по отдельности хватает только на определение ''. Если процедура возвращает "1", Eggdrop не обрабатывает далее строку (значит, что ваш бот ведет себя иногда довольно странно).

      Модуль: server

    18. BOT

      bind bot <flags> <command> <proc>
      proc-name <from-bot> <command> <text>

      Описание: реагирует на сообщение, пришедшее с другого бота в ботнет. Первое слово является командой и следующим за ней аргументов; поле '' игнорируется.

      Модуль: core

    19. CHON (stackable)

      bind chon <flags> <mask> <proc>
      proc-name <handle> <idx>

      Описание: когда кто-либо впервые входит на патилайн через dcc-чат или телнет, эта привязка реагирует перед тем, как этот кто-либо присоединится к чат-каналу (да-да, вы можете изменить канал в процедуре 'chon'). В поле '' указывается прозвище и поддерживаются маски. Эта процедура НЕ реагирует на то, что кто-либо вернулся из файлобласти и т.п.

      Модуль: core

    20. CHOF (stackable)

      bind chof <flags> <mask> <proc>
      proc-name <handle> <idx>

      Описание: срабатывает, когда кто-либо покидает патилайн с последующим отсоединением от бота. В поле '' указывается прозвище и поддерживаются маски. Заметьте, что соединение может прерваться пользователем, так что не посылайте вывод информации на idx.

      Модуль: core

    21. SENT (stackable)

      bind sent <flags> <mask> <proc>
      proc-name <handle> <nick> <path/to/file>

      Описание: после того, как пользователь удачно скачает файл с бота, эта привязка сработает. Поле '' содержит прозвише пользователя, который инициировал пересылку, и поддерживает маски. '' – текущий получатель (на IRC) файла. В поле '' указывается относительный путь до dcc-директории (если пересылка файла начинается вызовом скрипта к 'dccsend', в описываемом случае точный путь указывается в вызове 'dccsend').

      Модуль: transfer

    22. RCVD (stackable)

      bind rcvd <flags> <mask> <proc>
      proc-name <handle> <nick> <path/to/file>

      Описание: реагирует на удачную закачку файла пользователем. В поле '' указывается пользовательское прозвище. '' содержит имя пользователя, который закачивает файл. '' – окончательный относительный путь перемещения файла, располагаемый в dcc-директории (обычно, ваша директория входящих файлов).

      Модуль: transfer

    23. CHAT (stackable)

      bind chat <flags> <mask> <proc>
      proc-name <handle> <channel#> <text>

      Описание: когда кто-нибудь произносит что-либо в ботнете, это вызывает реакцию данной процедуры. Поле '' игнорируется; '' содержит прозвище пользователя на боте (DronePup) или другого бота (Eden@Wilde) и поэтому вы не можете ответить на записанного локально пользователя. В поле 'mask' указывается текстовая строка, и поддерживаются маски.

      NOTE: Если БОТ сказал что-либо на ботнете, то вместо описанной привязки вызывается BCST.

      Модуль: core

    24. LINK (stackable)

      bind link <flags> <mask> <proc>
      proc-name <botname> <via>

      Описание: реагирует на линковку бота в ботнет. '' это имя бота, которым он линкуется в ботнет; '' – транзитный бот. '' проверяет botnetnick линкующегося бота и поддерживает маски. Поле '' игнорируется.

      Модуль: core

    25. DISC (stackable)

      bind disc <flags> <mask> <proc>
      proc-name <botname>

      Описание: реагирует на рассоединение бота с ботнетом по какой-либо причине. Похоже на процедуру линковки, '' игнорируются; '' проверяет botnetnick отлинковывающегося бота, маски поддерживаются.

      Модуль: core

    26. SPLT (stackable)

      bind splt <flags> <mask> <proc>
      procname <nick> <user@host> <handle> <channel>

      Описание: реагирует на уход кого-либо с канала в нетсплит. Конечно, это может быть расценено за фальшивую тревогу (очень просто сделать поддельный нетсплит singoff-сообщением в некоторых сетях); '' может содержать маски и имеет формат '#channel nick!user@host'. Любой, кто вызовет SPLT, вызовет реакцию на REJN или SIGN не позднее wait-split-минут (указываемые в конфигурационном файле).

      Модуль: irc

    27. REJN (stackable)

      bind rejn <flags> <mask> <proc>
      procname <nick> <user@host> <handle> <channel>

      Описание: кто-либо, кто после сплита заново зашел на канал. '' может содержать маски и имеет формат '#channel nick!user@host'.

      Модуль: irc

    28. FILT (stackable)

      bind filt <flags> <mask> <proc>
      procname <idx> <text>

      Описание: пользователи патилайна и файловой области могут послать текст через FILT перед обработкой. Если процедура вернет пустую строку, текст продолжит обработку. Иначе бот использует вернувшийся текст из процедуры и продолжит его обработку.

      Модуль: core

    29. 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

    30. FLUD (stackable)

      bind flud <flags> <type> <proc>
      procname <nick> <user@host> <handle> <type> <channel>

      Описание: любой флуд, засеченный через настройки флуд-контроля (типа 'flood-ctcp') обрабатывается этой процедурой. Если процедура вернула "1", то никаких действий флуд не вызывает; если процедура вернула "0", бот применяет свое обычное для флуда "наказание". Типы флуда: pub, msg, join или ctcp (могут попасть под маску "*"); поле '' игнорируется.

      Модуль: server

    31. NOTE (stackable)

      bind note <flags> <mask> <proc>
      procname <from> <to> <text>

      Описание: входящие записки (как с патилайна кого-нибудь в IRC так и с другого бота в ботнете) вызывают реакцию этой процедуры. Если привязка отсутствует, бот не будет обрабатывать записки. Поле '' должно быть строго указанным (никаких масок), но регистр не важен; поле '' игнорируется.

      Модуль: core

    32. ACT (stackable)

      bind act <flags> <mask> <proc>
      proc-name <handle> <channel#> <action>

      Описание: когда кто-либо выполняет действие на ботнете, это вызывает реакцию текущей процедуры. '' игнорируются; '' отлавливает текст действия и может содержать маски.

      Модуль: core

    33. WALL (stackable)

      bind wall <flags> <mask> <proc>
      proc-name <handle> <msg>

      Описание: когда бот получает wallops, возникает реакция этой процедуры. Поле '' игнорируется; '' отлавливает текст wallops-сообщения. Заметим, что исходя из RFC, имя сервера показывается в том же формате, что и исходное сообщение, некоторые IRCd отсылают в формате "nick!user@host", и Eggdrop его не обрабатывает, а просто передает привязке так, как оно есть. Если процесс возвращает 1, Eggdrop не журналирует сообщение, на которое сработала привязка.

      Модуль: server

    34. BCST (stackable)

      bind bcst <flags> <mask> <proc>
      proc-name <botname> <channel#> <text>

      Описание: когда бот отсылает сообщение всему ботнету (см. 'dccbroadcast' выше), возникает реакция этой процедуры. Поле '' игнорируется; '' отлавливает текст и может содержать маски. Аргумент "channel" всегда будет "-1".

      Это так же происходит, если БОТ (не человек, как в отношении с привязкой CHAT) что-нибудь произносит на канале посредством команды. В этом случае аргумент "channel" будет реальным, а не "-1".

      Модуль: core

    35. CHJN (stackable)

      bind chjn <flags> <mask> <proc>
      proc-name <botname> <handle> <channel#> <flag> <idx> <user@host>

      Описание: реагирует на чей-либо вход на канал ботнета. '' отлавливает название канала и может содержать маски. В поле '' указывается один из: * (владелец), + (мастер), @ (оператор) или % (мастер ботнета).

      Модуль: core

    36. CHPT (stackable)

      bind chpt <flags> <mask> <proc>
      proc-name <botname> <handle> <idx> <channel#>

      Описание: реагирует на чей-либо выход с канала ботнета. Поле '' игнорируется; '' отлавливает название канала и может содержать маски.

      Модуль: core

    37. TIME (stackable)

      bind time <flags> <mask> <proc>
      proc-name <minute> <hour> <day> <month> <year>

      Описание: позволяет вызывать процедуры по расписанию. '' содержит 5 разделенных пробелами целых значений формы "минуты часы дни месяцы годы". Минуты, часы, дни, месяцы содержат значение из двух цифр (нулей); год в любом случае имеет длину в четыре символа. Поле 'flags' игнорируется.

      Модуль: core

    38. AWAY (stackable)

      bind away <flags> <mask> <proc>
      proc-name <botname> <idx> <text>

      Описание: реагирует на чей-либо уход или возвращение на ботнет. В поле '' указывается причина (если причина не указывается, возвращается текст ""). '' отлавливает botnetnick бота, к которому подсоединен пользователь и может содержать маски. Поле '' игнорируется.

      Модуль: core

    39. LOAD (stackable)

      bind load <flags> <mask> <proc>
      proc-name <module>

      Описание: реагирует на загрузку модуля. '' содержит имя загружаемого модуля и поддерживает маски; поле '' игнорируется.

      Модуль: core

    40. UNLD (stackable)

      bind unld <flags> <mask> <proc>
      proc-name <module>

      Описание: реагирует на выгрузку модуля. '' содержит имя выгружаемого модуля и поддерживает маски; поле '' игнорируется.

      Модуль: core

    41. NKCH (stackable)

      bind nkch <flags> <mask> <proc>
      proc-name <oldhandle> <newhandle>

      Описание: реагирует на изменение прозвища локального пользователя (в userfile). '' отлавливает старое прозвище пользователя и может содержать маски; поле '' игнорируется.

      Модуль: core

    42. EVNT (stackable)

      bind evnt <flags> <type> <proc>
      proc-name <type>

      Описание: реагирует на одно из событий. Поле '' игнорируется; доступные значения:

      sighup

      вызывается при kill -HUP

      sigterm

      вызывается при kill -TERM

      sigill

      вызывается при kill -ILL

      sigquit

      вызывается при kill -QUIT

      save

      вызывается при сохранении userfile

      rehash

      вызывается после команды rehash (обновление настроек бота)

      prerehash

      вызывается перед командой rehash

      prerestart

      вызывается перед рестартом

      logfile

      вызывается при суточном переключении лог-файлов

      loaded

      вызывается при загрузке бота

      userfile-loaded

      вызывается после загрузки userfile

      connect-server

      вызывается перед подсоединением к IRC-серверу

      init-server

      вызывается при соединении с IRC-сервером

      disconnect-server

      вызывается при рассоединении с IRC-сервером

      Модуль: core

    43. LOST (stackable)

      bind lost <flags> <mask> <proc>
      proc-name <handle> <nick> <path> <bytes-transferred> <length-of-file>

      Описание: реагирует на обрыв пересылки DCC SEND, подобно тому, когда соединение разрывается до окончания пересылки/получения данных. В основном случается при обрыве пользователем.

      Модуль: transfer

    44. TOUT (stackable)

      bind tout <flags> <mask> <proc>
      proc-name <handle> <nick> <path> <bytes-transferred> <length-of-file>

      Описание: реагирует при таймауте при пересылке DCC SEND. Это может случаться по причине отсутствия подтверждения на dcc-соединение или остановке пересылке данных по какой-либо причине.

      Модуль: transfer

  2. Возвращаемые значения

    Различные привязки на события привлекают внимание своими возвратами от процедуры (используя формат '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 или больше символов пробела (может использоваться для слов, разделенных пробелами)


Copyright © 1997 Robey Pointer
Copyright © 1999 – 2006 Eggheads Development Team Eggheads Development Team
Copyright © 2003-2004, 2005-2006, 2007 Перевод vadim s. sabinich


У меня есть телеграм-канал, где я пишу чуть чаще и менее формально 🙂 Подписывайся!
Tcl-команды Eggdrop

2 комментария для “Tcl-команды Eggdrop

  1. Последняя редакция: April 16, 2003 Что нового? В начале прочитайте следующие документы: Компиляция и установка Eggdrop Readme Частозадаваемые вопросы Создание ботнета UPDATES1.6 Tcl-команды EggdropВсе эти…

  2. Рады представить вам Eggdrop. Пожалуйста, перед установкой и настройкой будьте уверены, что прочитали все файлы, особенно если вы никогда ранее не компилировали или не устанавливали…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пролистать наверх