negezor / vk-io

Modern VK API SDK for Node.js
https://npm.im/vk-io
MIT License
545 stars 86 forks source link

scene реагирует только команду "тест", а не любая фраза. #307

Closed ObicaFF closed 4 years ago

ObicaFF commented 4 years ago

Имеет реализации и обработчик команд.

код:

sceneManager.addScene(new StepScene('signup', [
    (message) => {
        if (message.scene.step.firstTime || !message.text) {
            return message.send('Как тебя зовут?');
        }
        message.user.nick = message.text;
        return message.scene.step.next();
    },
    (message) => {
        if (message.scene.step.firstTime || !message.text) {
            return message.send('Сколько тебе лет?');
        }
        message.user.age = Number(message.text);
        return message.scene.step.next();
    },
    async (message) => {
        const { firstName, age } = message.scene.state;

        await message.send(`👤 Вы ${message.user.nick}, Вам ${message.user.age} лет`);

        await message.scene.leave();
    }
]));

cmd.hear(/^(?:тест)/i, (message) => {
    return message.scene.enter('signup');
});

scene реагирует только на команду, если все время писать тест и тест, то результат получит: 👤 Вы тест Вам NaN лет scene не реагирует на любую фразу, в том числе число. Он просто игнорит и делает вид, что ничего не происходит

negezor commented 4 years ago

По всей видимости вы не установили перехватчик сообщений.

vk.updates.on('message', sceneManager.middlewareIntercept);

UPD 1: Вы используете message.user вместо message.scene.state

P.S. пожалуйста оформаляйте код через Markdown блок кода ```js Your code ```

ObicaFF commented 4 years ago

и то, и то не помогло. Принято решение без реализации сидеть. Благодарю