Реакции

Реакция — обработчик какого-либо события LongPoll, принимающий сами имена обрабатываемых событий (например, новое сообщение или новый пост в группе) в аргументы при инициализации и функцию-обработчик этого события уже в __call__ (т.е. при декорировании). Когда нужные событие было поймано, реакция проходится по валидаторам и определяет, подходит ли она по более тонким параметрам, например, соотвествует ли текст сообщения шаблону команды, или отправлено ли сообщение в беседу. Если все валидаторы указали на то, что кейс валидный, реакция подготавливает аргументы для самого кода обработки и вызывает его как async (таской), либо sync.

Пример реакции на каждое новое сообщение, которое выводит в консоль лог

import logging

import vkquick as vq


logging.basicConfig(level=logging.INFO)


@vq.Reaction("message_new")
def log_msg():
    logging.info("New message to bot!")

Аналогично, но для редактирования сообщений

import logging

import vkquick as vq


logging.basicConfig(level=logging.INFO)


@vq.Reaction("message_edit")
def log_msg():
    logging.info("A message was edited!")

Можно указать несколько событий через запятую

@vq.Reaction("message_new", "wall_post_new")

Или указать реакцию на абсолютно все события

@vq.Reaction()

Warning

Декоратор с Reaction должен быть самым первым (ближе всего к имени функции), а уже после него должны находиться валидаторы