Приоритет шаблонов

Как определить, какой из имеющихся шаблонов сработает на тот или иной запрос гостя?

Для этого нужно знать приоритет шаблона.

1. шаблоны из Моих шаблонов всегда имеют более высокий приоритет, чем предустановленные шаблоны инфа. Поэтому, например, шаблон в Моих шаблонах
$ * где *
"перебьет" предустановленный шаблон для вопроса "Где ты живешь" из темы "География".
В этом случае, если хочется, чтобы инф правильно отвечал на вопрос "Где ты живешь", нужно создать шаблон в Моих шаблонах вроде
$ * где * живеш~ *

2. Внутри Моих шаблонов выбор между двумя подходящими шаблонами идет следующим образом:
- Лучшим считается шаблон, который "прицеплен" к якорю
т.е., допустим, есть 3 шаблона
$ тест
# Тест работает (якорь "тест")

(якорь "тест")
$ * тест2 *
# Якорь - это замечательно.

$ * тест2 *
# Тест - это хорошо.
тогда если у нас будет вот такой диалог:
Гость: тест
Инф: Тест работает.
Гость: тест2

то после реплики тест2 гостя инф ответит:

Инф: Якорь - это замечательно.
А в остальных случаях на "тест2" будет выдаваться ответ "Тест - это хорошо".
- Иначе, лучшим считается шаблон, в котором нет звёздочек (*).
т.е. если у нас есть шаблоны:

$ а где {?/--}
# Нигде

и

$ * а где {?/--}
# Где-то.
то на вопрос "а где?" пользователь всегда получит ответ "Нигде".

- Иначе, лучшим считается шаблон большей длины, т.е. шаблон, в котором больше слов (не считая звёздочек).

ВАЖНО:
- знаки ? и ! считаются отдельными словами!
- суперзвездочка ** считается за 0,5 слова, звездочка * при подсчете длины шаблона не учитывается.
Например, длина вот этого шаблона
$ меня зовут **
будет 2,5
а длина вот этого шаблона:
$ меня зовут *
будет 2.
Таким образом, на фразу гостя "Меня зовут Вася" сработает шаблон большей длины, т.е. шаблон длины 2,5 ($ меня зовут **)
- Из двух одинаковых шаблонов шаблон выбирается случайным образом.

ВАЖНО:
Это означает, что, в частности, шаблоны вроде:
$ * где *
и
$ *?
для запроса "где?" считаются шаблонами с одинаковым приоритетом, т.к. оба со звёздочками и одинаковой длины 1 (т.к. в каждом из них - по одному слову). Соответственно, инф каждый раз будет случайным образом выбирать один из ответов на эти шаблоны.
Т.о. если у вас в Моих шаблонах созданы шаблоны
$ *?
и/или
$ *!
не забывайте, что такие шаблоны и шаблоны вида
$ * X *
$ X *
где X – одно слово,
равносильны для запросов вида X? и/или X!

Чтобы избежать этого, нужно к шаблонам вида
$ * X *
$ X *
где X – одно слово,
приписывать дополнительные шаблоны-вопросы с суперзвёздочкой вот такого вида:
$ * X **
$ X **
Т.е.
$ * X *
$ * X **
$ X *
$ X **