Квоты и ограничения
Чтобы один шаблон не мог замедлить бота для всех, у каждого выполнения есть квоты: сколько шагов сделать, сколько раз обратиться к хранилищам, сколько сообщений отправить. Обычные шаблоны до квот даже не приближаются.
Квоты одного выполнения
| Ресурс | Лимит |
|---|---|
| Шаги движка | 50 000 |
| Время работы | 50 мс |
| Шаги всех циклов вместе | 5 000 |
| Вложенность циклов | 3 |
| Вложенность вызовов макросов | 16 |
| Длина любой строки | 16 КБ |
| Элементов в списке, пар в карте | 250 |
Переходов run в цепочке | 3 |
Вставок include | 5, каждый шаблон один раз |
| Атрибуты | 5 разных ключей |
| Индексы | 2 индекса, 2 записи, 1 страница до 25 записей |
| Обращения к astral | 5 |
| Отправка сообщений из шаблона | 3 |
| Изменения ролей бота | 10 |
Участники через chat.getMember | 5 |
| Реакции | 1 на сообщение |
| Кнопки | 25 под сообщением, 1–8 в ряду внутри текста |
Цепочка — одно выполнение
Если действие запускает другое через run, квоты не обнуляются: все действия цепочки тратят общий запас.
Размер шаблона и сообщения
| Что | Лимит |
|---|---|
| Длина шаблона | 16 КБ |
| Итоговое rich-сообщение | 32 768 символов, 500 блоков, вложенность 16, 50 медиа, 20 столбцов в таблице |
| Итоговое сообщение в режиме Text | 4096 символов, подпись к медиа — 1024 |
Частота команд
| Что | Лимит |
|---|---|
| Выполнений пользовательских команд | 30 в минуту на чат, 5 в минуту на участника |
| Нажатий кнопок | 20 за 10 секунд на участника |
Хранилища
| Что | Лимит |
|---|---|
| Ключей атрибутов в чате | 10 000 |
| Размер значения атрибута | 4 КБ |
| Индексов в чате | 50 |
| Записей в одном индексе | 100 000 |
| Длина ключа записи индекса | 255 символов |
| Длина метаданных записи | 500 символов |
| Время жизни параметров | 15 минут с последнего обращения |
| Время жизни кнопок | 180 дней с последнего нажатия |
Объекты в панели
| Что | Лимит |
|---|---|
| Пользовательских команд в чате | 100 |
| Действий в команде | 10 |
| Общих шаблонов в чате | 50 |
Что будет при превышении
Выполнение останавливается, участник получает короткое понятное сообщение, а подробности попадают во вкладку «Диагностика». Коды ошибок квот начинаются с quota_: quota_steps, quota_loops, quota_storage и другие — см. Ошибки.
Как уложиться в квоты
- Не читайте в цикле атрибуты разных участников — для топов используйте индексы.
- Сохраняйте результат
astral.club(…)в переменную черезsetи используйте ее, а не вызывайте функцию повторно. - Для больших списков используйте
slice, чтобы обработать только нужную часть.