--- url: /reference/chat-index.md description: >- Типы ChatIndex, ChatIndexEntry и Page — индексы чата для топов и рейтингов с постраничным выводом. --- # ChatIndex и Page
Индекс чата — отсортированная таблица «ключ → число» для топов и рейтингов. Руководство — в статье Индексы чата.
## ChatIndex { #index } Получается через `chat.getIndex('имя')` или `chat.indexes.имя`. | Метод | Возвращает | Описание | |---|---|---| | `get(ключ)` | [ChatIndexEntry](#entry) | Запись по ключу (до 255 символов) | | `update({ k1: v1, k2: v2 })` | — | Записать до двух значений сразу | | `getPageOf(номер, размер, порядок)` | [Page](#page) | Страница записей. Номер с 0, размер до 25, порядок `'DESC'` или `'ASC'` | | `clearAll()` | — | Удалить все записи индекса | ## ChatIndexEntry { #entry } | Свойство | Тип | Описание | |---|---|---| | `key` | Строка | Ключ записи | | `value` | Число | Значение | | `metadata` | Строка | Дополнительные данные, до 500 символов | | `indexName` | Строка | Имя индекса | | `updatedAt` | [DateTime](./datetime) | Когда меняли | | Метод | Описание | |---|---| | `update(значение, метаданные?)` | Записать значение | | `increment(n)`, `decrement(n)` | Прибавить или вычесть | | `clear()` | Удалить запись | ## Page { #page } Страница записей. Ее можно перебрать в цикле `for`. | Свойство | Описание | |---|---| | `content` | Список записей страницы | | `number` | Номер страницы с 0 | | `size` | Размер страницы | | `numberOfElements` | Сколько записей на этой странице | | `totalElements` | Сколько всего записей | | `totalPages` | Сколько всего страниц | | `sort` | Порядок сортировки | | `hasContent`, `hasNext` | Есть ли записи, есть ли следующая страница | | `isFirst`, `isLast` | Первая ли, последняя ли страница | ## Квоты { #quotas } За одно выполнение — до 2 разных индексов, 2 записей и 1 страницы. В чате — до 50 индексов, в индексе — до 100 000 записей. ## Пример { #example } ```template {% set page = chat.indexes.wins.getPageOf(0, 5, 'DESC') %} 🏆 Топ-5 по победам: {% for e in page %} {{ loop.index }}. {{ mention(e.key) }} — {{ e.value }} {% endfor %} ```