Расширение возможностей клиента с помощью скриптов

Создание надстроек в виде DLL оказалось для многих пользователей недоступным, поэтому сделана попытка подружить клиент с простым, но очень мощным скриптовым языком LUA (Подробнее: www.lua.org, lua.ru)

Планируется, что c помощью скриптов будут реализоватся самые изысканые запросы (например, замысловатые условия авто-банов, управление скоростями закачек).

На данный момент реализован необходимый минимум для создания "разговорного" бота, но система комманд будет расширяться.

Общие положения

Подробное руковоство находится в процессе написания, ниже будут даны лишь краткие комментарии к функциям скрипта. Представление о приёмах программирования в LUA можно получить, изучив скрипты к хаб-ботам (Robocop, HUBBA-BOT)

Вызов системных функций клиента

Функция DC() вернёт таблицу, в которой зарегистрированы сервисные функции клиента greylink. Пока доступны следующие функции:

Примеры вызова из строки ввода чата:

/lua DC():PrintDebug("this goes to client system log")
/lua DC():MessageBox(DC():GetSetting("LanguageFile"), DC():GetAppPath(), "ok", "warning")

При выполнении команд /lua и /luafile в глобальных переменных dc_huburl и dc_uid будут записаны параметры хаба и пользователя, из чата которых выполняется команда. Чтобы отличить запуск скрипта из чата хаба от запуска из приватного чата, можно использовать такое условие: if (DC():GetUserInfo(dc_uid).ME == "1") then hub

Передача скрипту сообщений о событиях

Скрипт должен создать таблицу с именем dcpp и в ней определить функции:



Примеры

sample1.lua
Бот - повторялка (только в личке)
Запустить можно командой /luafile sample1.lua

sample2.lua
Бот - перекидывает все обращения из лички в общий чат

sample3.lua
Считывает файл Favorites.xml и выводит случайно выбранную строку в чат хаба 127.0.0.1

sample4.lua
Замена "graylink" на "greylink" во всех отправляемых сообщениях. Запрет отправки строки "fly"

spam.lua
Бот - пишет с заданным периодом спам в общий чат заданного хаба
Для загрузки бота используется команда /luafile spam.lua