Telegram Bot API. Как собирать изображения только между начальным и конечным сообщениями? - PullRequest
0 голосов
/ 18 сентября 2018

Я пишу бот Telegram (nodejs), который будет собирать все изображения, отправленные ему между сообщениями «начало» и «конец». Я узнал, как запустить bot.onText(/\/start/, но как реагировать на «конечное» сообщение от пользователя, чтобы начать реагировать после этого?

1 Ответ

0 голосов
/ 18 сентября 2018

Вам необходимо поддерживать состояние для каждого пользователя, который собирается отправить вам команду /start и /end.Вы можете сохранить состояние в хранилище ключей / значений (например, { userid: xxx, end: false }. Затем вы можете проверять хранилище базы данных при каждой отправке изображения. Пример того, как будет выглядеть ваш код:

bot.onText(/\/start/, msg => {
    //saveToDb({chat_id: msg.chat.id, completed: false});
});


bot.onText(/\/end/, msg => {
    //saveToDb({chat_id: msg.chat.id, completed: true});
});

bot.on("message", msg => {
    // most of this code is just for logical purposes to explain the concept
    if (typeof msg.image === "object") {
       //const completed = checkDb(msg.chat.id);
       if (completed !== true) {
          // work with the image
       }
    }
});

В качестве альтернативы вы можете взглянуть на mau , целью которого является решение этой проблемы. Он хорошо работает с node-telegram-bot-api, проверьте папку с примерами, чтобы начать работу.

...