Макросы (CBS)
Скриптинг в фигурных скобках в любом тексте промпта.
Синтаксис
Макросы — токены в двойных фигурных скобках, разворачиваемые в момент запроса. Они работают в полях персонажей, записях лорбуков, пресетах, приветствиях и обычном тексте чата, и вкладываются друг в друга.
{{char}} smiles at {{user}}.
{{random::sunny::rainy::foggy}}
{{calc::1+2*3}}Аргументы разделяются двойным двоеточием. Неизвестные макросы разворачиваются в ничто, а не в ошибку, так что опечатка никогда не ломает запрос.
Базовые макросы
| Макрос | Разворачивается в |
|---|---|
{{char}} | Имя текущего персонажа (в группах — текущего говорящего). |
{{user}} | Имя вашей персоны. |
{{persona}} | Описание вашей персоны. |
{{description}} | Поле описания текущего персонажа. |
{{lastmessage}} | Текст последнего сообщения. |
{{time}} / {{date}} | Текущее время / дата в вашем языке и часовом поясе. |
Случайность
random выбирает аргумент заново при каждом развороте, pick делает выбор, стабильный для разговора, а roll бросает кости в d-нотации.
{{random::a::b::c}} {{pick::a::b::c}} {{roll::d20}}Броски и случайности засеяны на ход: перегенерация использует те же значения, так что свайп не перебрасывает ваши кости.
Переменные
Чатовые переменные живут в пределах ветки разговора; глобальные — во всех чатах. Задавайте их в любом тексте с макросами или из триггер-скриптов.
{{setvar::mood::happy}}
{{getvar::mood}}
{{setglobalvar::visits::1}}Хранение по веткам означает: свайп на другую ветку возвращает её состояние переменных; сёстры никогда не протекают значениями друг в друга.
Блочные формы
Блоки оборачивают содержимое: if отрисовывает тело только при истинном условии, each итерирует по массивам с подстановкой слота, а when добавляет построчные else-ветки.
{{#if {{equal::{{getvar::mood}}::happy}}}}
{{char}} is in a great mood.
{{/if}}
{{#each {{array::red::green::blue}} item}}
Color: {{slot::item}}
{{/each}}pure и escape защищают буквальные скобки от разворота; любой закрывающий тег закрывает самый внутренний открытый блок.
Комментарии и литералы
Макросы-комментарии исчезают прежде, чем модель их увидит, — идеально для заметок в полях карточки. Используйте pure-блоки, когда нужно показать синтаксис макросов буквально.
{{// note to self, never sent to the model}}
{{#pure}}{{char}} stays literal here{{/pure}}