Skip to content

Contexts

Описание принципов работы с контекстами

Описание типов

Attachment API Reference [EN]

Инициализация

Опции конструктора

Концепция

Представляет из себя базовый класс для работы с контекстами. Контексты проходят через middleware, позволяя себя модифицировать.

У каждого контекста есть описание типов вызываемых событий

  • type — основной тип контекста (например message)
  • subTypes — подтипы контекста (например [message_new, chat_kick_user])

Для удобного определения контекста, есть метод context.is(), позволяет искать сразу по типу и подтипу. Производит поиск пока не найдёт одно подходящее значение.

ts
// Context { type: 'message', subTypes: [...] }
context.is(['message']); // => true

// Context { type: 'message', subTypes: ['chat_invite_user_by_link'] }
context.is(['chat_invite_user', 'chat_invite_user_by_link']); // => true

В каждом контексте, так же есть стандартное пространство для хранения простых состояний, в свойстве state

ts
updates.on('message_new', async (context, next) => {
    context.state.user = await fetchUser(context.senderId);
    // При этом ничего вам не мешает расширить сам контекст
    // context.user = await fetchUser(context.senderId);

    return next();
});

Список контекстов:

Внимание

Контексты могут содержать неполные данные, если например вы получаете их с User Long Poll.

Сериализация контекста

ts
JSON.stringify(context); // => object