Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/users/l/lotusfeet/domains/fatal-dev.ru/forum/include/parser.php on line 738

1

Тема: Кое-что об алиасах

При создании алиасов есть такая вещь как макросы замены, это одна из недокументированных возможностей идущих еще из бота Neutron. Несколько макросов уже было, несколько добавил я. Так вот, начинаются эти макросы с символов "%(" и заканчиваются символом ")". Их можно вставлять в тело алиасов, эти макросы будут заменены на то, что они вычисляют при выполнении алиаса.

Список макросов замены:

%(context, conf) - заменяется на джид текущей конференции,  в которой вызвали алиас, содержащий этот макрос.
%(context, nick) - заменяется на nick участника конференции, который вызвал алиас, содержащий этот макрос.
%(context, conf_jid) - заменяется на conf/nick участника конференции, который вызвал алиас, содержащий этот макрос.

%(rand, <from>, <to>) - заменяется на случайное число в диапазоне от <from> до <to>.

%(shell_escape, <text>) - заменяется на <text> без символов, которые могут быть опасны в shell, используется в алиасах с командой sh, при указании в качестве текста $*. Вместо этой команды и макроса в алиасах можно использовать безопасную команду ssh, она лучше справляется с опасными символами.

%(xml_escape, <text>) - заменяется на <text> без символов, которые не входят в стандарт xml-потока, используются в алиасах с командой stanza, при указании в качестве текста $*.

%(defval, <val>, <default>) - заменяется на <val> если оно не пустое, иначе вместо <val> подставляется значение по умолчанию <default>, в качестве <val> обычно указывается $*, что очень полезно, когда пользователь вызывает алиас без параметров, то вместо $* подставляется пустое значение и вместо пустоты <default>. С ревизии 333:3.

Несколько примеров:

Всем известный алиас "вероятность":

вероятность = .echo Ваше утверждение верно с вероятностью %(rand, 0, 101)%.

Коннект ICQ-транспорта в ростере бота, это чтобы использовать бота в контакт-листе ICQ, да, и такое возможно. В to адрес icq-транспорта, который использует бот, у меня это icq.catap.ru:

.icqs = .stanza <presence xml:lang='ru' to='icq.catap.ru'><show>%(defval, $*, online)</show></presence>

Ну вот вроде бы и все, если есть какие-то предложения по добавлению новых макросов замены, всегда пожалуйста. Пишите сюда или в конференцию fatal-dev@conference.jabber.ru, рассмотрим вместе все предложения. smile

Ad energiam, trans noctem et luctem!