Триггеры, Бот-Триггеры, ЛС-Триггеры, роботы, антикапслок

Плагин: Triggery i anticapslok.Triggers and anticapslock

Это, пожалуй, наиболее интересный плагин. Триггеры реагируют на текст в чате или привате и имеют широкий ассортимент реакций. С помощью триггеров можно создавать простые реакции бота на текст в чате и привате с ответом, создавать команды с различными функциями вплоть до получения и форматирования web-страниц из интернета, записи файлов и многое другое. Событие (текст), на который должна происходить реакция, задаётся с помощью кратких шаблонов. Проверить результаты парсировки краткого шаблона можно по команде !checkpattern <краткий шаблон>.

Триггеры

Триггеры просматривают события в главном чате на соответствие имеющимся шаблонам триггеров. Если шаблон не представляет собой команду, то движок триггеров не реагирует на пользователей в исключениях. Сначала создаётся новый триггер командой !addtriggers <краткий_шаблон>. После чего для задания какой-либо реакции на это событие нужно добавить ответ (или ответы) в этот триггер с желаемым индексом. Это делается командой !addanswers <индекс> <ответ>. Если ответов несколько, то выбирается один из них случайным образом. Ответ может быть строкой. Текст ответа будет отправлен в чат от имени Бота. В тексте могут присутствовать специальные вставки, которые представляют собой инструкции для того или иного действия. После обработки специальные вставки вырезаются из ответа. Если после обработки всех специальных вставок простого текста найдено не будет, то реакции от имени Бота не будет (кроме действий, заданных в инструкциях спецвставок). Вот перечень возможных вставок:

{class:мин_класс[-макс_класс]:ответ} – задаёт минимальный класс пользователя для срабатывания, иначе прекращение обработки (возможно указание максимального класса через дефис). Если класс пользователя, на который данный триггер с этим ответом сработал, ниже (или не входит в указанный диапазон), то пользователь получит ответ, указанный во флаге и обработка триггера прекратится.

{ifclass:мин_класс[-макс_класс]} – аналогичен предыдущему флагу {class}, только в случае невыполнения условия событие не прерывается. Тоесть никакой реакции не будет.

{user:nick1[$nick2]} – задаёт перечень ников пользователей для срабатывания, иначе нет реакции (ники разделяются символом $). Тоесть можно указать ник непосредственно или переменную.

{usernot:nick1[$nick2]} – флаг обратный флагу {user}.

{if:var:value} – задаёт условие для срабатывания, иначе нет реакции. Проверяет, соответствует ли значение value значению переменной var. Value может быть как текстом, так и переменной со значением.

{ifnot:var:value} – флаг с противоположной предыдущему флагу {if} реакцией. Тоесть сработает, если значение value не равно значению переменной var.

{var:Имя_переменной1="Шаблон_значения1" [Имя_переменной2="Шаблон_значения2"]} – задаёт имена переменных и их значения для использования далее в ответах: [Имя_переменной]. Таким образом имя переменной, заданной этим флагом, при использовании в ответе в квадратных скобках заменится на её значение. Шаблон составляется по правилам LUA-regex.

{gvar:var:value} – задаёт глобальную переменную с именем var и значением value. Глобальная переменная хранится в памяти и доступна при последующих обращениях.

{delvar:var1[$var2]} – удаляет глобальные переменные (можно указать несколько переменных, разделяя имена символом $).

{repl:Шаблон_замены1="Значение_замены1" [Шаблон_замены2="Значение_замены2"]} – задаёт шаблоны замен для использования в ответах. Таким образом можно заменять исходный текст по шаблонам на указанные в параметрах замены. Шаблоны замен составляются по правилам LUA-regex. Возможны захваты, передающиеся в ответы.

{srepl:текст1="замена1" [текст2="замена2"]} – задаёт текстовые замены для использования в ответах, тоесть без использования шаблонов регулярных выражений, как в предыдущем флаге {repl}.

{rev:Шаблон_реверса1 [Шаблон_реверса2]} – задаёт шаблоны участков, которые будут перевёрнуты (реверсированы). Возможно использование захвата.

{rand:var:d1:d2} – присвоит переменной var случайное число в промежутке от d1 до d2, которые могут быть целыми числами или переменными, значениями которых являются целые числа.

{math:var:action:elem1:elem2} – присвоит переменной var результат действия action над элементами elem1 и elem2. Action может быть:

+ сложение;
- вычитание;
^ возведение в степень;
* умножение;
/ деление;
\ целочисленное деление с округлением вниз;
% целочисленное деление с округлением вверх;
> или < присвоит переменной значение 1 если неравенство верно, иначе 0.
Элементами elem1 и elem2 могут быть как числа, так и числовые переменные.

{chat:текст} – отправит текст в общий чат как есть. Возможно использование переменных.

{mode:type:текст} – отправит текст в чат всем пользователям с режимом подключения type (A,P,S). Возможно использование переменных.

{profile:класс:текст} – отправит текст в чат всем пользователям с указанным классом. Возможно использование переменных.

{touser:ник1[$ник2…$никN]:текст} – отправит текст в общий указанному пользователю. Возможно указывать несколько ников, разделённых символом $. Возможно использование переменных.

{pm:текст} – отправит текст в приват пользователю от имени Бота, на которого сработал триггер. Возможно использование переменных.

{pmto:ник1[$ник2…$никN]:from:текст} – отправит текст в приват указанному пользователю от имени from. Возможно указывать несколько ников, разделённых символом $. Возможно использование переменных.

{pmall:текст} – отправит текст в приват всем пользователям от имени бота. Возможно использование переменных.

{pmmode:type:from:текст} – отправит текст от имени from в приват всем пользователям с режимом подключения type (A,P,S). Возможно использование переменных.

{pmprofile:класс:from:текст} – отправит текст от имени from в приват всем пользователям с указанным классом. Возможно использование переменных.

{flood:число:текст} – отправит текст в приват пользователю, на которого сработал триггер, указанное число раз. Возможно использование переменных.

{flooduser:ник:число:текст} – отправит текст в приват указанному пользователю указанное число раз. Возможно использование переменных.

{file:filename} – отправит текст из файла по пути filename (полный путь) в приват пользователю, на которого сработал триггер (имя файла без расширения указывает на файл в директории txt). Возможно использование переменных.

{varfile:var:filename} – поместит содержимое файла по пути filename (полный путь) в переменную var (остальное по правилам флага {file}).

{url:адрес,GZip,CodePage,Proxy"основной_шаблон"шаблон_ответа"ответ} – получает текст страницы с указанным URL-адресом. При этом может указываться использование GZip (1 или 0), имя кодировки (для PtokaX должна указываться кодировка, имеющаяся в таблице локальных кодировок) и адрес прокси-сервера (эти параметры могут быть пропущены, но запятые обязательны). Полученный текст проходит по всем основным шаблонам, выделяя в них шаблон ответа и возвращая ответ. Шаблон ответа может содержать захваты (captures), которые возвращаются в ответе.

{varurl:var:адрес,GZip,CodePage,Proxy"основной_шаблон"шаблон_ответа"ответ} – аналогичен флагу {url}, но результат заносит в переменную var.

{curl:кодировка} – устанавливает кодировку для преобразования url-адреса флагов {url} и {varurl}. Если используется локальная таблица кодировок, то должна быть указана имеющаяся кодировка.

{ban:минуты:причина} – забанить пользователя, на которого сработал триггер, на указанное число минут с указанной причиной. Возможно использование переменных.

{tofile:режим_записи:filename$text} – запись текста text в файл с именем filename (разделены символом $). Режимы записи:
w - режим записи с заменой содержимого, a - режим дозаписи в конец файла. Возможно использование переменных.

{wait} – флаг для задержки реакции на время до ближайшего срабатывания таймера скрипта (период таймера 60 секунд).

{exit} – производит незамедлительное прекращение процедуры дальнейшей обработки.

Имейте в виду, что в тексте ответа возможно применять зарезервированные вставки: [curUser], [BotName], [hub], [time], [date],[topic], [revUser], [ip], которые заменяются соответственно на ник текущего пользователя, имя Бота, название Хаба, время, дату, текущий топик, реверсированный ник и IP текущего пользователя.

Удалить триггер с выбранным индексом можно по команде !deltriggers <индекс>. Для триггеров надо иметь в виду, что триггер с индексом 1 зарезервирован под систему антикапслока и изменению шаблона или удалению не подлежит. Удалить ответ с выбранным индексом из триггера с выбранным индексом можно по команде !delanswers <индекс_триггера> <индекс_ответа>. Включить/выключить систему триггеров можно по команде !istriggers. Посмотреть список триггеров можно по команде !seetriggers. Посмотреть подробно триггер с выбранным индексом и его ответы можно по команде !seetriggeranswers <индекс>.

Можно группировать триггеры в группы для удобства. Поместить триггер с выбранным индексом в группу с выбранным названием можно по команде !triggersaddgroup <index> <groupname>. Убрать выбранный триггер из группы, в которой он находится в настоящий момент, можно по команде !triggersdelgroup <index>. Удалить выбранную группу вместе с триггерами можно по команде !triggersremgroup <groupname>. Переименовать группу с выбранным названием можно по команде !triggersrengroup <groupname>$<newgroupname>. Расформировать группу с выбранным названием можно по команде !triggersclsgroup <groupname>. Посмотреть состав группы с выбранным названием можно по команде !triggersseegroup <groupname>.

Бот-Триггеры

Бот-триггеры похожи на триггеры, только привязаны к определённому роботу (о них ниже). И по умолчанию текст (как в чате, так и в приватных сообщениях) в ответ пользователю поступает от имени этого робота, к которому привязан бот-триггер. Правила добавления бот-триггеров и ответов к ним аналогичны правилам для триггеров. При добавлении триггера в случае программирования краткого шаблона для приватных сообщений учитывается формат приватных сообщений протокола.

Посмотреть список бот-триггеров можно по команде !seebottriggers. Посмотреть подробнее бот-триггер с выбранным индексом и его ответы можно по команде !seebottriggeranswers <индекс>. Добавить бот-триггер для робота с выбранным ником можно по команде !addbottriggers <ник> <краткий_шаблон>. Добавить ответ в бот-триггер с выбранным индексом можно по команде !аddbotаnswers <индекс> <ответ>. Удалить бот-триггер с выбранным индексом можно по команде !delbottriggers <индекс>. Удалить ответ с выбранным индексом из бот-триггера с выбранным индексом можно по команде !delbotanswers <индекс_триггера> <индекс_ответа>. Добавить бот-триггер с выбранным индексом в группу с выбранным названием можно по команде !bottriggersaddgroup <index> <groupname>. Убрать бот-триггер с выбранным индексом из группы, в которой он в данный момент состоит, можно по команде !bottriggersdelgroup <index>. Удалить группу с выбранным названием вместе с имеющимися в ней бот-триггерами можно по команде !bottriggersremgroup <groupname>. Переименовать группу с выбранным названием можно по команде !bottriggersrengroup <groupname>$<newgroupname>. Расформировать группу с выбранным названием можно по команде !bottriggersclsgroup <groupname>. Посмотреть состав группы с выбранным названием можно по команде !bottriggersseegroup <groupname>. Включается/выключается система бот-триггеров вместе с системой триггеров.

ЛС-Триггеры

ЛС-триггеры похожи на триггеры, только специализированы на личных (приватных) сообщениях. Они просматривают приватные сообщения Хаба. Правила добавления лс-триггеров и ответов к ним аналогичны правилам для триггеров. При добавлении триггера учитывается формат приватных сообщений протокола.

Посмотреть список лс-триггеров можно по команде !seepmtriggers. Посмотреть подоробнее лс-триггер с выбранным индексом и его ответы можно по команде !seepmtriggeranswers <индекс>. Добавить лс-триггер по команде !addpmtriggers <краткий_шаблон>. Добавить ответ в лс-триггер с выбранным индексом можно по команде !addpmanswers <индекс> <ответ>. Удалить лс-триггер с выбранным индексом можно по команде !delpmtriggers <индекс>. Удалить ответ с выбранным индексом из лс-триггера с выбранным индексом можно по команде !delpmanswers <индекс_триггера> <индекс_ответа>. Добавить лс-триггер с выбранным индексом в группу с выбранным названием можно по команде !pmtriggersaddgroup <index> <groupname>. Убрать лс-триггер с выбранным индексом из группы, в которой он в данный момент состоит, можно по команде !pmtriggersdelgroup <index>. Удалить группу с выбранным названием вместе с имеющимися в ней лс-триггерами можно по команде !pmtriggersremgroup <groupname>. Переименовать группу с выбранным названием можно по команде !pmtriggersrengroup <groupname>$<newgroupname>. Расформировать группу с выбранным названием можно по команде !pmtriggersclsgroup <groupname>. Посмотреть состав группы с выбранным названием можно по команде !pmtriggersseegroup <groupname>. Включить/выключить систему лс-триггеров можно по команде !ispmtriggers.

Роботы

Роботы представляют собой ботов, которые видны в списке пользователей. Созданным роботам можно присваивать бот-триггеры. Это удобно, когда необходимо сделать сервис, который может принимать информацию в виде приватных сообщений. Добавить робота с желаемым ником и описанием можно по команде !addnewbot <ник> <OP> <описание>. Флаг OP может быть 1 (виден как оператор) или 0 (виден в списке пользователей как простой пользователь). Удалить робот с выбранным ником можно по команде !delnewbot <ник>. Посмотреть список роботов можно по команде !newbotlist.

Антикапслок

Этот сервис служит для автоматического преобразования символов в нижний регистр, если пользователь злоупотребляет прописными буквами. Может как просто предупреждать пользователя в чате (выполняются ответы из зарезервированного триггера с индексом 1) или просто автоматически меняет регистр. Переключается этот режим по команде !capsmode. Триггер с индексом 1 нельзя удалять. Ответы можно удалять и менять.

Глобальные переменные триггеров

В ответах триггеров можно применять переменные, которые заданы как "глобальные". Эти переменные, в отличие от простых, не удаляются после обработки ответа и сохраняются в специальном массиве в памяти. Доступны всем триггерам. Есть возможность включить функцию сохранения массива глобальных переменных в файл. Кроме специальных флагов ответов триггеров для управления глобальными переменными можно применять команды. Для того, чтобы задать выбранное значение для глобальной переменной с выбранным именем можно воспользоваться командой !triggersaddvar <varname> <varvalue>. Если переменной с таким именем не существует, то она будет создана. Удалить глобальную переменную с выбранным именем можно по команде !triggersdelvar [<varname>]. Если имя не указано, будут удалены все имеющиеся глобальные переменные. Посмотреть значение глобальной переменной с выбранным именем можно по команде !triggersseevar [<varname>]. Если имя не указано, то будет выведен список имён имеющихся глобальных переменных.

Если константе triggers_isSaveGVars присвоено значение 1 (по умолчанию 0), то глобальные переменные будут сохраняться в файл. При этом они останутся доступными после перезагрузки.  Таблицы триггеров, лс-триггеров и бот-триггеров хранятся в файлах Trigs.lua, PMTrigs.lua и BotTrigs.lua. База роботов хранится в файле BotList.

Примеры триггеров:


===== Список ответов: =====
Триггер: 12. ^монетка$
Шаблоны:
    ^(%z?)[МмM]+[ОоOo0]+[НнH]+[ЕеEe]+[ТтT]+[КкKk]+[АаAa]+(%z?)$
Ответы:
1. [curUser] бросает монетку, выпадает: Орёл
2. [curUser] бросает монетку, выпадает: Решка
3. [curUser] бросает монетку, но она куда-то закатилась... :(
=============================================
В этом примере на фразу "монетка" (без другого текста) в чат выбирается случайным образом ответ.

===== Список ответов: =====
Триггер: 7. ^[%%%+!]погода_[%%%d]
Шаблоны:
    ^(%z?)[%+!]+[Пп]+[ОоOo0]+[Гг]+[ОоOo0]+[Дд]+[АаAa]+[%s]+[%d]+
Ответы:
1.  {var:GOROD="%S+%s+(%d+)"}{url:http://www.rp5.ru/rss.php?id=[GOROD],,utf8,"<item><title>.-</item>"<item><title>(.-)</title>.-<description>(.-)</description>.-</item>"\n\t••• %1 •••\n%2\n}{exit}
=============================================
В этом примере реализована команда "!погода" (или "+погода"), после которой через пробел пишется код города (число). Во флаге {var} переменной GOROD присваивается число, которое представляет собой код города и пишется после команды через пробел. Флаг {url} получает из Web код страницы, где представлен прогноз погодв в городе с указанным кодом. Этот текст обрабатывается с учётом шаблонов ответа. Выделяются непосредственно заголовки прогноза по дням (флаг <title> передайтся во вставку %1) и сам прогноз для этого дня (флаг <description> передайтся во вставку %2). Формируется текст для вывода и в приват пользователю, вводившему команду, посылается текст прогноза погоды. Флаг {exit} заставляет прервать дальнейшую обработку команды.

===== Список ответов: =====
Триггер: 5. ^[%%%+!]баш_[%%%d]$
Шаблоны:
      ^(%z?)[%+]+[Бб6]+[АаAa]+[Шш]+[%s]+[%d]+(%z?)$
Ответы:
1.    {class:1:Команда только для зарегистрированных пользователей}{var:Q="%s(%d+)"}{repl:&quot;="'" &lt;="<" &gt;=">" <br%s/>="\n" <br>="\n"}{url:http://bash.org.ru/quote/[Q],1,,"<div>[^<].-</div>"<div>([^<].-)</div>"\n%1\n}{exit}
=============================================
Этот пример аналогичен по принципу предыдущему. Здесь по команде "!баш" с номером цитаты через пробел выводится цитата с известного интернет-цитатника. Используется GZip. Флаг {class} ограничивает доступ к сервису только пользователями, чей класс выше класса 1 (для Verlihub это только зарегистированные пользователи). Флаг {repl} задаёт автоматические замены участков исходного кода на нужные символы (или текст).

===== Список ответов: =====
Триггер: 4. ^[%%%+!]раскладка_[%%%S%%%s]
 Шаблоны:
    ^(%z?)[%+!]+[РрPp]+[АаAa]+[СсCc]+[КкKk]+[Лл]+[АаAa]+[Дд]+[КкKk]+[АаAa]+[%s]+[%S%s]+
 Ответы:
1.    {class:1:Команда только для зарегистрированных}{var:T="^%S+%s+(.+)"}{srepl:A="Ф" a="ф" B="И" b="и" C="С" c="с" D="В" d="в" E="У" e="у" F="А" f="а" G="П" g="п" H="Р" h="р" I="Ш" i="ш" J="О" j="о" K="Л" k="л" L="Д" l="д" M="Ь" m="ь" N="Т" n="т" O="Щ" o="щ" P="З" p="з" Q="Й" q="й" R="К" r="к" S="Ы" s="ы" T="Е" t="е" U="Г" u="г" V="М" v="м" W="Ц" w="ц" X="Ч" x="ч" Y="Н" y="н" Z="Я" z="я" {="Х" [="х" ]="ъ" :="Ж" ;="ж" '="э" <="Б" ,="б" >="Ю" .="ю" @="*" ~="Ё" `="ё"}[T]{exit}
=============================================
В этом примере сначала переменной T присваивается текст после команды. Задаются шаблоны текстовых замен. Затем текст, который находится в переменной T, отправляется пользователю. При этом символы из текстовых замен заменяются. Так производится преобразование текста, который по ошибке написан не в той раскладке клавиатуры.

===== Список ответов: =====
Триггер: 49. ^[%%%+!]призрак_[%%%S]
Шаблоны:
    ^(%z?)[%+!]+[Пп]+[РрPp]+[Ии]+[Зз3]+[РрPp]+[АаAa]+[КкKk]+[%s]+[%S]+
Ответы:
1.    {class:3:Только для администрации.}{var:T="%S+%s+(.+)"}{chat:[T]}{exit}
=============================================
В этом примере показано, как написать в чат текст без ника. Эта команда разрешена пользователям, чей класс не ниже 3.

===== Список ответов: =====
Триггер: 7. ^$-To:_[%%%S]_From:_[%%%S]_$-<[%%%S]>_[%%%S] Бот: Русско-Английский
Шаблоны:
    ^(%z?)[$][TtТ]+[OoОо0]+[:]+[%s]+[%S]+[%s]+[Ff]+[Rr]+[OoОо0]+[MmМ]+[:]+[%s]+[%S]+[%s]+[$][<]+[%S]+[>]+[%s]+[%S]+
Ответы:
1.    {class:1:Только для зарегистрированных}{var:SR=".To:%s%S+%sFrom:%s%S+%s.<%S+>%s(.+)"}{curl:utf8}{url:http://m.translate.ru/translator/result/?text=[SR]&dirCode=re,1,utf8,"<div%s+class%=.tres.>.-</div>"<div%s+class%=.tres.>(.-)</div>"\nФраза:\n--------------------\n[SR]\n\nПеревод:\n--------------------\n%1}{exit}
============================
Здесь показан пример бот-триггера, привязанного к роботу "Русско-английский". Это русско-английский переводчик, который переводит текст, написанный в приват роботу, с Русского на английский.

===== Список ответов: =====
Триггер: 1. ^$-To:_[%%%S]_From:_[%%%S]_$-<[%%%S]>_[%%%S]   Бот: •Google•
 Шаблоны:
    ^(%z?)[$][TtТ]+[OoОо0]+[:]+[%s]+[%S]+[%s]+[Ff]+[Rr]+[OoОо0]+[MmМ]+[:]+[%s]+[%S]+[%s]+[$][<]+[%S]+[>]+[%s]+[%S]+
 Ответы:
  1.    {var:Q=".To:%s%S+%sFrom:%s%S+%s.<%S+>%s(.+)"}{repl:</?b>="" <br/>=" "}{curl:utf8}{url:http://www.google.ru/pda?q=[Q],,utf8,"<div>%s*<div.class%=.r%s+ld.>%s*<div.class%=.jd.><a.-href%=.%S-.%s*>.-</a>%s*</div>.-<div.class%=.kd.>.-</div>"<div>%s*<div.class%=.r%s+ld.>%s*<div.class%=.jd.><a.-href%=.(%S-).%s*>(.-)</a>%s*</div>.-<div.class%=.kd.>(.-)</div>"\n%1 - %2\n%3\n}
============================
Здесь показан пример бот-триггера, привязанного к роботу "•Google•". Это поиск по Гугл через приват робота.

===== Список ответов: =====
Триггер: 68. сколько_тебе_лет
Шаблоны:
    (%z?)[СсCc]+[КкKk]+[ОоOo0]+[Лл]+[Ььb]+[КкKk]+[ОоOo0]+[%s]+[ТтT]+[ЕеEe]+[Бб6]+[ЕеEe]+[%s]+[Лл]+[ЕеEe]+[ТтT]+(%z?)
Ответы:
1.    {rand:d1:100:1000}{rand:d2:100:1000}{math:d3:+:[d1]:[d2]}[curUser], я прожил [d1] лет, да ещё [d2]. Мне [d3] лет...
=============================================
Вот пример, когда на текст в чате "сколько тебе лет" бот ответит, сложив два случайных числа от 100 до 1000 каждое.

===== Список ответов: =====
Триггер: 41. ^[%^%%%+%!%%%*]-[%%%S]?
Шаблоны:
    ^(%z?)[^%+!%*][%S]*
Ответы:
1.    {user:[USERSREVERSE]}{rev:(%S+)}{var:T="(.+)"}{chat:<[revUser]> [T]}{exit}
=============================================
===== Список ответов: =====
Триггер: 42. ^[%%%+!]наоборот_[%%%S]$
Шаблоны:
    ^(%z?)[%+!]+[НнH]+[АаAa]+[ОоOo0]+[Бб6]+[ОоOo0]+[РрPp]+[ОоOo0]+[ТтT]+[%s]+[%S]+(%z?)$
Ответы:
1.    {class:3:Только для администрации.}{var:U="%S+%s+(%S+)"}{gvar:USERSREVERSE:[USERSREVERSE]$[U]}{chat:<[BotName]> [curUser] взмахивает волшебной палкой и [U] начинает выглядеть весьма странно, словно задом наперёд... O.o}{exit}
=============================================
===== Список ответов: =====
Триггер: 43. ^[%%%+!]ненаоборот_[%%%S]$
Шаблоны:
    ^(%z?)[%+!]+[НнH]+[ЕеEe]+[НнH]+[АаAa]+[ОоOo0]+[Бб6]+[ОоOo0]+[РрPp]+[ОоOo0]+[ТтT]+[%s]+[%S]+(%z?)$
Ответы:
1.    {class:3:Только для администрации.}{var:U="%S+%s+(%S+)"}{srepl:$[U]=""}{gvar:USERSREVERSE:[USERSREVERSE]}{chat:<[BotName]> [curUser] взмахивает волшебной палкой и [U] начинает выглядеть как обычно :)}{exit}
=============================================
Этот пример представляет собой шутку. Командой "!наоборот ник" пользователь с ником "ник" будет писать в чат слова задом наперёд. Командой "!ненаоборот ник" пользователю возвращается возможность писать нормально.

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

===== Список ответов: =====
Триггер: 54. ^[%%%+!]перевод_[%e%r%g%f%s%p%i]-[%e%r%g%f%s%p%i]-$
 Шаблоны:
    ^(%z?)[%+!]+[Пп]+[ЕеEe]+[РрPp]+[ЕеEe]+[ВвB]+[ОоOo0]+[Дд]+[%s]+[ergfspi][ergfspi](%z?)$
 Ответы:
  1.    {class:1:Только для зарегистрированных.}{var:T="^%S+%s+(%S+)"}{gvar:[curUser]_AUTOTRANSLATE:[T]}{touser:[curUser]:<[BotName]> Вы будете писать в чате с автоматическим переводом: [T]}{exit}
=============================================
===== Список ответов: =====
Триггер: 56. ^[%%%+!]перевод$
 Шаблоны:
    ^(%z?)[%+!]+[Пп]+[ЕеEe]+[РрPp]+[ЕеEe]+[ВвB]+[ОоOo0]+[Дд]+(%z?)$
 Ответы:
  1.    {class:1:Только для зарегистрированных.}{delvar:[curUser]_AUTOTRANSLATE}{touser:[curUser]:<[BotName]> Вы не будете писать в чате с автоматическим переводом.}{exit}
=============================================
===== Список ответов: =====
Триггер: 58. ^[%^%%%+%!%%%*]-[%%%S]?
 Шаблоны:
    ^(%z?)[^%+!%*][%S]*
 Ответы:
  1.    {if:[curUser]_AUTOTRANSLATE:[[curUser]_AUTOTRANSLATE]}{curl:utf8}{repl:%"="'"}{var:SR="(.+)"}{varurl:ET:http://m.online-translator.com/translator/result/?text=[SR]&dirCode=[[curUser]_AUTOTRANSLATE],1,utf8,"<div%s+class%=.tres.>.-</div>"<div%s+class%=.tres.>(.-)</div>"%1}{chat:<[curUser]> [ET]}{exit}
=============================================
Здесь по команде "!перевод <направление>" пользователь задаёт для себя направление перевода. направление представляет собой две буквы, первая из которых - это направление с которого переводим, а в торая - направление, на которое переводим. Например, направление "re" определяет перевод с Русского на английский, а напрвление "fg" с французского на немецкий и т.д. Фраза переводится, если строка не начинается на символы *,+ и !. Командой "!перевод" без параметров пользователь отключает для себя автоматический перевод.

И так далее… На самом деле возможности системы триггеров далеко не ограничиваются этими примерами и показать все возможности здесь не представляется возможным. Но все они довольно просты и подчиняются одной системе.


<<< назад | печать | К началу...
PhazaSoft© Экзекутор©
Hosted by uCoz