Реакции
Реакция — обработчик какого-либо события 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
должен быть самым первым (ближе всего к имени функции), а уже после него должны находиться валидаторы