Мысли, мысли, мысли...

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 будет показывать полную версию.

Полезные ссылки

  • Неплохая статья по регулярным выражениям.
  • Описание регулярных выражений на WIKI.
  • Онлайн тестер регулярных выражений.

Новости: 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}*

Нет опубликованных комментариев.

Новый комментарий

AtomHomeLinksopiums.eu

© Copyright by opiums. Адрес: Кемеровская обл, г. Междуреченск, Кузнецкая ул, 14. Телефон: +7(923)4108152
Наверх