DB Hub принимает скрипты, написанные на перле. Для примера - смотрите скрипты. О том как программировать на перле, можете посомтреть здесь www.perl.com или здесь www.perldoc.com.
Все файлы в директории ".dbhub/scripts" с именами, заканчивающимися на ".pl" воспринимаются как скрипты во время запуска хаба и каждый раз при использовании команды !reloadscripts.
Делая скрипты, полезно запускать хаб с опцией -d, что направит вывод хаба в консоль. Если Вы сделаете ошибки в скрипте, некоторые ошибки интерпертатора перл будут выведены в консоль, что может оказать существенную помощь в отладке. как только будеьте уверены, что скрипт работает как надо, можете запускать хаб как обычно в фоне. Опция -d толкьо для теста, поскольку некоторые специальные символы в $Lock или $Key псоледовательностях могут сделать терминал не пригодным.
Ниже следует описание событий и функций, которые можно использовать в скриптах ( function(arg_1, arg_2, ..., arg_n) ).
Аргумент - ник пользователя, представляется в виде строки.
added_perm_ban(string banentry);
Срабатывает, когда добавляется запись в banlist.
added_temp_ban(string banentry, int time);
Срабатывает, когда временный бан добавляется в banlist. Время бана выражено в секундах.
added_perm_allow(string allowentry);
Срабатывает, когда добавляется запись в allowlist.
added_temp_allow(string allowentry, int time);
Срабатывает, когда добавляется временная запись в allowlist. Время выражено в секундах.
added_perm_nickban(string allowentry);
Срабатывает, когда добавляется запись в nickbanlist.
added_temp_nickban(string banentry int time);
Срабатывает, когда добавляется временная запись в nickbanlist. Время выражено в секундах.
kicked_user(string kicked_user, string kicking_user);
Срабатывает, когда был кикнут пользователь. kicked_user - тот, кто был кикнут, а kicking_user - тот, кто кикнул.
added_registered_user(string nick);
Срабатывает, когдадобавляется запись в reglist о зарегистрированном пользователе.
added_multi_hub(string hostname, int port);
Срабатывает, когда подлинкованный хаб добавляется в linklist.
started_redirecting(string hostname);
Срабатывает, когда администратор перенаправляет всех пользователей.
mass_message(string message);
Срабатывает, когда администратор отправляет массовое сообщение (приватное сообщение всем).
started_serving();
Срабатывает, когда запускается хаб.
multi_hub_data_chunk_in(string data);
Срабатывает, когда получены данные с подлинкованного хаба.
attempted_connection(string hostname);
Срабатывает, когда кто-то пытается подключиться к хабу.
data_arrival(user_t user, string data);
Срабатывает, когда пользователь посылает данные хабу, вероятно, одна из самых полезных функций.
admin_connected(user_t user);
Срабатывает, когда ADMIN заходит на хаб.
chef_connected(user_t user);
Срабатывает, когда CHEEF заходит на хаб.
op_connected(user_t user);
Срабатывает, когда OP заходит на хаб.
kvip_connected(user_t user);
Срабатывает, когда KVIP заходит на хаб.
vip_connected(user_t user);
Срабатывает, когда VIP заходит на хаб.
reg_connected(user_t user);
Срабатывает, когда REG заходит на хаб.
prot_connected(user_t user);
Срабатывает, когда PROTECTED заходит на хаб.
new_user_connected(user_t user);
Срабатывает, когда REGULAR заходит на хаб, т.е. после отправки $MyINFO хабу.
user_disconnected(string nick);
Срабатывает, когда пользователь уходит с хаба.
hub_timer();
Срабатывает каждые ALARM_TIME секунд, по умолчанию параметр установлен в 15 минут.
-------------------------------------------------------------------------------
Здесь представлены доступные функции выполняемые на виртуальном объекте odch. Тип user_t такой же как и в событиях выше.
Эти функции используются для получения пользовательских атрибутов.
string odch::get_ip(user_t user);
Возвращает IP адрес пользователя как строку.
string odch::get_hostname(user_t user);
Возвращает имя хоста пользователя.
string odch::get_version(user_t user);
Возвращает версию клиента пользователя.
string odch::get_description(user_t user);
Возвращает описание пользователя.
string odch::get_email(user_t user);
Возвращает email пользователя.
int odch::get_connection(user_t user);
Возвращает тип соединения пользователя как целое число, соответственно: 28.8: 1, 33.6: 2, 56: 3, Satellite: 4 ISDN: 5, DSL: 6, Cable: 7, LAN(T1): 8, LAN(T3): 9.
int odch::get_flag(user_t user);
Возвращает флаг пользователя.
int odch::get_share(user_t user);
Возвращает величину шары пользователя в байтах.
int odch::check_if_banned(user_t user);
Возвращает 1, если пользователь в банлисте (banlist), и 0, если нет.
int odch::check_if_allowed(user_t user);
Возвращает 0, если пользователь находится в allowlist, и 0, если нет.
odch::check_if_registered(string nick);
Проверяет наличие ника в реглисте (reglist). Возвращает 0, если пользователя там нет, 1 если он PROTECTED, 2 если REG, 3 если VIP, 4 если KVIP, 5 если OP, 6 если CHEEF, 7 если ADMIN, и 8 если OWNER.
-------------------------------------------------------------------------------
Функции для взаимодействия с пользователями.
odch::data_to_user(user_t user, string data);
Отправляет данные пользователю, например, личное сообщение: $To Nickname From: Scriptname $<scriptname> Message.| Примечание, это raw команда, клиенты не обрабатывают команду, если она не заканчивается на "|".
odch::kick_user(user_t user);
Кикнуть пользователя.
odch::force_move_user(user_t user, string ip);
Отправяет команду перенаправления пользователя, где ip - IP адрес или имя хоста, куда пользователь должен будет соедениться.
-------------------------------------------------------------------------------
Эти функции используются для получения и изменения переменных конфиг файла.
var odch::get_variable(string variable_name);
Возвращает значение переменной из конфиг файла. Переменная может быть как числом так и строкой, взависимости от запрашиваемой переменной. Помимо переменных в конфиг файле, этой функцией можно получить ещё три переменных: working_dir, hub_uptime и total_share.
working_dir - путь к корню хаба. По умолчанию, это домашняя директория пользователя.
hub_uptime - аптайм хаба в секундах.
total_share - величина всей шары на хабе в байтах.
odch::set_variable(string variable, string value);
Задаёт значение переменной в конфиг файле. Даже если типа переменной - число, необходимо посылать значение как строку, например: set_variable("max_users", "800");
-------------------------------------------------------------------------------
Функции для добавления и удаления записей из списков.
odch::add_ban_entry(string banentry);
Добавляет запись в banlist.
odch::add_nickban_entry(string banentry);
Добавляет запись в nickbanlist.
odch::remove_ban_entry(string banentry);
Удаляет запись из banlist.
odch::remove_nickban_entry(string banentry);
Удаляет запись из nickbanlist.
odch::add_allow_entry(string allowentry);
Добавляет запись в allowlist.
odch::remove_allow_entry(string allowentry);
Удаляет запись из allowlist.
odch::add_reg_user(string nick, string password, int type);
Добавляет аккаунт в reglist. Тип 0 для обычных зарегистрированных пользователей, 1 для OP, и 2 для OP Admins (OP с доступом к администраторским командам в чате).
odch::remove_reg_user(string nick);
Удалить пользователя из reglist.
-------------------------------------------------------------------------------
Различные функции для взаимодействия с хабом.
odch::data_to_all(string data);
Отправить данные всем пользователям пользователям, например, сообщение в чате: <Botname> Message.|
int odch::count_users();
Возвращает число подключенных к хабу пользователей.
string odch::get_user_list();
Возвращает всех пользователей на хабе разделённых пробелами.
odch::register_script_name(string nick);
Регистрирует 'nick' как ник скрипта в никлисте, так пользователи смогу отправлять личное сообщение скрипту. Ник добавится в reglist со случайным паролем. Примечание, запись в реглисте не будет удалена после того, как скрипт будет выгружен или хаб остановится, это нужно будет делать в ручную.
-------------------------------------------------------------------------------
Будте осторожны вводя odch имена функций, т.к. если Вы ошибётесь, вы не получите никакой информации об этом, и скрипт не будет работать.