vk-io
vk-io copied to clipboard
enterHandler для сцен срабатывает всегда
What did you do?
Установил enterHandler для сцен
new StepScene('sceneName', {
steps,
enterHandler() {
console.log('HERE')
}
What did you expect to happen?
Ожидал, что хендлер сработает лишь один раз, при входе в сцену
What was the actual result?
Вместо этого консоль выводит HERE при каждой отправке сообщения от пользователя, как будто установилась обычная мидлвара для сцены
Versions
| package | version |
|---|---|
vk-io |
4.7.0 |
@vk-io/scenes |
1.2.0 |
Хорошее замечание. Первоначально так и было задумано, можно проверить условие и выйти из сцены до запуска обработчиков например. Хотя наверное стоит переименовать обработчик на beforeEnterHandler и ввести новый enterHandler который вызывается ровно один раз.
Хорошее замечание. Первоначально так и было задумано, можно проверить условие и выйти из сцены до запуска обработчиков например. Хотя наверное стоит переименовать обработчик на
beforeEnterHandlerи ввести новыйenterHandlerкоторый вызывается ровно один раз.
Было бы не плохо ввести именно enterHandler метод, который и подразумевает под собой единоразовый запуск (только при входе в сцену), потому что каждую мидлвару так костылить я думаю так себе идея
А еще лучше, если бы можно было передавать туда массив хендлеров, который сработают лишь один раз
Остаётся только подумать что делать с silent режимом при входе в сцену (отложенный запуск до следующего сообщения), а вот массив обработчиков уже не очень понятно. Туда нужно добавлять либо новую цепочку middleware или просто устроить гонку состояния.