Isida 4 команды бота
Май 072017Команды бота
У бота довольно много команд и список постоянно растёт. Список команд бота, доступных с текущим уровнем доступом, можно получить командой commands. Большинство комманд имеют встроенную помощь, которую можно запросить по команде help <команда, либо часть описания команды>, но есть сложные команды, принципы работы которых сложно понять по краткому встроенному описанию.
Списки действий: acl
Данная команда предоставляет возможность настроить действия на определённые события в конференции, например, на фрагмент сообщения или на определённый ресурс участника.
-
acl show - Показать список действий
-
acl del [access_level] [/silent] item - Удалить элемент item из списка
-
acl [access_level] [/time] [/silent] тип_события [sub|exp|cexp] pattern command - Выполнить команду по условию
Тип события один из списка: msg, prs, prs_change, prs_join, role, role_change, role_join, aff, aff_change, aff_join, nick, nick_change, nick_join, all, all_change, all_join, jid, jidfull, res, age, ver, vcard. Описание типов событий ниже.
Со слеша начинаются дополнительные ключи:
/time - Задать время «жизни» правила. По истечении данного времени правило автоматически будет удалено при очередном событии, подходящем под тип правила. В данном случае «time» это число+идентификатор. Где идентификатор один из указанных:
-
s - секунды
-
m - минуты
-
d - дни
-
w - недели
-
M - месяцы
-
y - годы
Например: /10h - 10 часов или /1w - 1 неделя. Можно использовать только один идентификатор!
/silent - При успешном добавлении либо удалении не выводить полное содержимое действия, а просто ответить ок. Данный ключ сделан для создания алиасов на базе acl, т.к. в них достаточно просто информировать об успешном исполнении.
access_level - Уровень доступа, для которого будет исполняться данное правило.
Далее следует описание типа события, на которое необходима реакция:
-
msg - сообщение
-
prs - любое статусное сообщение
-
prs_change - любое статусное сообщение, кроме сообщения о входе
-
prs_join - статусное сообщение при входе
-
role - любой презенс с ролью участника (visitor, participant, moderator)
-
role_change - смена роли либо обычный презенс, кроме презенса о входе
-
role_join - роль участника при входе в конференцию
-
aff - любой презенс с аффиляцией участника (none, member, admin, owner)
-
aff_change - смена аффиляции либо обычный презенс, кроме презенса о входе
-
aff_join - аффиляция участника при входе в конференцию
-
nick - любой презенс с ником
-
nick_change - смена ника, кроме ника при входе
-
nick_join - ник при входе
-
jid - jid без ресурса
-
jidfull - jid с ресурсом
-
res - ресурс
-
age - время нахождения участника в конференции
-
ver - версия клиента
-
vcard - vCard участника
-
all - любое из перечисленных выше событий
-
all_change - любое из перечисленных выше событий, кроме событий при входе
-
all_join - любое из перечисленных выше событий только при входе
Далее идёт описание типа выборки:
-
sub - подстрока
-
exp - регулярное выражение
-
cexp - регистрозависимое регулярное выражение
-
= - строгое соответствие выражения. при этом можно знак '=' не указывать
-
>, <, >=, <= - данные условия доступны только для события age
Далее следует любая команда бота с уровнем доступа до 7 включительно. Внутри команды можно использовать переменные:
-
${NICK} - ник участника от которого пришло событие
-
${JID} - jid участника
-
${SERVER} - сервер, на котором находится jid участника
-
${EXP} RegExp выражение ${/EXP} - передача параметров вырезанных регулярным выражением
Примеры
Ответ на фразу, содержащую слово «привет»:
acl msg sub привет say ${NICK}: и тебе не болеть!
Выгонять участников с ресурсом QIP:
acl res cexp ^QIP$ kick ${NICK} фтопку нарушения стандартов!
Показывать версию участника, если он находится в конференции меньше минуты:
acl age < 60 ver ${NICK}
Уведомлять о том, что участник без полномочий (уровень доступа 3) скрывает версию:
acl 3 ver sub Ошибка say ${NICK} скрывает свою версию!
Лишать голоса участников без полномочий (уровень доступа 3), имеющих пустую vCard:
acl 3 vcard empty visitor ${NICK} Заполните vCard и перезайдите!
Уведомлять о том, что участник без полномочий (уровень доступа 3) во vCard имеет только фото:
acl 3 vcard exp ^PHOTO:image/[a-z]{2,10},\ [.kmg0-9]+b$ say У ${NICK} только фото во vCard!
Важно! Если в конференции есть acl-событие на версию клиента, как в последнем примере, то в age базу автоматически будет записываться информация о версии. Команда seen будет показывать версию клиента без указания системы. Команда seenjid будет показывать полную версию.
Полезные ссылки
Новости: rss
Бот может показывать RSS/ATOM новости в конференции по расписанию. Формат команды rss:
-
rss show - показать текущие подписки.
-
rss add url time mode - добавить подписку.
-
rss del url - удалить подписку.
-
rss get url feeds mode - получить текущие новости.
-
rss new url feeds mode - получить только не прочтенные новости.
-
rss clear - удалить все новости в текущей конференции.
-
rss all - показать все новости во всех конференциях.
где:
-
url - адрес rss канала. можно задавать без http://
-
time - время обновления канала. число + указатель времени. h - часы, m - минуты. допускается только один указатель.
-
feeds - количество сообщений для получения. не более 10 шт.
-
mode - режим получения сообщений. full - сообщения полностью, head - только заголовки, body - только тело сообщения. с окончанием -url будет ещё показана url новости.
Пример
rss add bash.org.ru/rss 1h full-url
Настройки: config
У бота довольно большое количество настроек. Настройки делятся на две группы - общие настройки и настройки под определённую конференцию. Общие настройки бота доступны его владельцу через обзор сервисов, ad-hoc или remote control jid'а бота в ростере. Настройки под конференцию доступны участникам с уровнем доступа не ниже 7 так-же через обзор сервисов, ad-hoc или remote control конференц-jid'а, либо через команду config.
config [show[ status]|help][ item]
Примеры
Просмотреть список настроек:
<diSabler> config show <iSida> Доступны элементы: autoturn, bomb, bomb_action, bomb_action_level, bomb_fault, bomb_fault_persent, bomb_idle, bomb_random, bomb_random_active, bomb_random_active_timer, bomb_random_timer, bomb_random_timer_persent, bomb_random_timer_skip_persent, bomb_reason, bomb_timer, bomb_wire, censor, censor_action_member, censor_action_non_member, censor_custom, censor_custom_rules, censor_warning, clear_answer, flood, karma_action, karma_action_1ban, karma_action_2kick, karma_action_3visitor, karma_action_4none, karma_action_5participant, karma_action_6member, karma_action_7moderator, karma_action_reason, karma_hard, karma_limit, karma_limit_size, make_stanza_jid_count, muc_filter, muc_filter_adblock, muc_filter_adblock_prs, muc_filter_adblock_prs_raw, muc_filter_adblock_raw, muc_filter_blacklist, muc_filter_blacklist_rules_jid, muc_filter_blacklist_rules_nick, muc_filter_censor, muc_filter_censor_prs, muc_filter_censor_prs_raw, muc_filter_censor_raw, muc_filter_deny_hash, muc_filter_deny_hash_list, muc_filter_hash, muc_filter_hash_action, muc_filter_hash_action_current, muc_filter_hash_action_time, muc_filter_hash_ban_by_rejoin, muc_filter_hash_ban_by_rejoin_timeout, muc_filter_hash_ban_server_by_rejoin, muc_filter_hash_ban_server_by_rejoin_exception, muc_filter_hash_ban_server_by_rejoin_notify_jid, muc_filter_hash_ban_server_by_rejoin_rejoins, muc_filter_hash_ban_server_by_rejoin_timeout, muc_filter_hash_events, muc_filter_hash_time, muc_filter_large, muc_filter_large_nick, muc_filter_large_status, muc_filter_match, muc_filter_newbie, muc_filter_newbie_time, muc_filter_newline, muc_filter_newline_count, muc_filter_newline_msg, muc_filter_newline_msg_count, muc_filter_raw_percent, muc_filter_reduce_spaces_msg, muc_filter_reduce_spaces_prs, muc_filter_rejoin, muc_filter_repeat, muc_filter_repeat_prs, muc_filter_whitelist, parse_define, smiles, url_title
Просмотр состояния элемента:
<diSabler> config flood <iSida> Флуд: умный
Просмотр вариантов настройки элемента:
<diSabler> config flood items <iSida> Доступны элементы: off (выкл), random (случайный), smart (умный)
Просмотр состояния всех настроек:
<diSabler> config show status <iSida> Текущий статус: [bomb] - Bomb. Разрешить раздачу бомб: вкл [bomb_action] - Bomb. Действие при взрыве: выгонять ... [url_title] - Показ заголовков ссылок: выкл
Описание элементов конфига
Количество настроек постоянно растёт и может не совпадать со списком ниже:
Настройки muc-фильтра
-
muc_filter - Общий выключатель muc-фильтра
-
muc_filter_adblock - Действие на рекламу в сообщении
-
muc_filter_adblock_prs - Действие на рекламу в статусных сообщениях
-
muc_filter_censor - Действия цензора на мат в сообщении
-
muc_filter_censor_prs - Действия цензора на мат в статусном сообщении
-
muc_filter_large - Действие на большое сообщение
-
muc_filter_large_nick - Действие на большой ник
-
muc_filter_large_status - Действие на большое статусное сообщение
-
muc_filter_match - Действие на повтор текста внутри сообщения
-
muc_filter_rejoin - Блокировка множественных входов
-
muc_filter_repeat - Действие на повторы сообщений
-
muc_filter_repeat_prs - Действие на частые отправки статусов
Более подробно о muc-фильтре можно прочитать тут.
Настройки бомбы-шутки
-
bomb - Разрешить раздачу бомб в данной конференции
-
bomb_action - Действие при взрыве бомбы
-
bomb_fault - Допускать процент бомб, которые не взрываются
-
bomb_fault_persent - Процент не рабочих бомб
-
bomb_idle - Время молчания участника в секундах, после которого ему нельзя давать бомбу
-
bomb_random - Разрешить выдавать бомбу случайному пользователю
-
bomb_random_active - Случайные бомбы только в активной конференции
-
bomb_random_active_timer - Время в секундах, в течении которого конференция считается активной
-
bomb_random_timer - Время в секундах между случайными бомбами
-
bomb_random_timer_persent - Погрешность времени между случайными бомбами в процентах
-
bomb_random_timer_skip_persent - Процент не установки случайных бомб
-
bomb_reason - Причина с которой будет действие при взрыве
-
bomb_timer - Таймер бомбы в секундах
-
bomb_wire - Количество проводов у бомбы
Прочие настройки
-
censor - Общий выключатель цензора
-
censor_action_member - Действие цензора на постоянных участников
-
censor_action_non_member - Действие цензора на не постоянных участников
-
censor_warning - Ругать админов за мат
-
clear_answer - Уведомления при очистке о начале и завершении в виде сообщения либо статуса
-
flood - Включение автоответчика
-
parse_define - Поиск в сообщения «что такое <выражение>?» и показ ответов через google define
-
url_title - Показ заголовков ссылок
-
hard_karma - Жесткая привязка к синтаксису команды при изменении кармы
Сокращения: alias
Команда alias предназначена для создания альтернативных команд на базе уже существующих и в сочетании с командой acl представляет довольно неплохой набор для расширения функционала бота.
Формат команды:
-
alias add aa=bb - выполнить команду bb при написании команды aa
-
alias del aa - удалить сокращение aa
-
alias show [text] - показать все сокращения или похожие на text
Внутрь сокращения можно передавать параметры:
-
%* - передать все параметры как есть
-
%N - передать параметр номер N, нумерация с нуля
-
%{reduce}* - удалить пробелы в начале и конце и передать параметр
-
%{reduceall}* - удалить пробелы в начале, конце, дубликаты пробелов внутри текста и передать параметр
-
%{unused}* - передать неиспользованные ранее параметры
Так-же надо учитывать, что в алиасе исполняемая команда указывается без префикса, так-же как и укороченная исполняется без префикса.
Примеры
Русская команда на ping:
alias add пинг=ping %{reduce}*
Команда автоматического лишения голоса участника:
alias add !avisitor=acl /%1 /silent jid %0 visitor ${NICK} %{unused}*
Вызывать команду:
!avisitor name@server.tld 1h так надо!
Полезные alias'ы
Цена SMS на короткий номер:
alias add !smscost=www <div id='info'>.*<p>(.*)</p> smscost.ru/number/%0
Последнее обновление на сайте бота:
alias add !latest=www <li>(.*)<li> isida-bot.com
Поиск на лурке:
alias add !lurk=www <!-- start content -->.*<p>(.*)</p> lurkmore.ru/index.php?search=%0
Показ статьи по номеру на Kill Me Please:
alias add !kmp=www <div class="fi_text">(.*)<div class="fi_vote"> http://killmepls.ru/story/%{reduce}*