AWS Lambda с NodeJS дает мне неожиданное поведение при обработке команд бота Telegram - PullRequest
0 голосов
/ 07 ноября 2018

Я использую AWS Lamba в качестве webhook для всех сообщений, которые приходят к боту. Однако у меня возникла проблема. По какой-то причине обработчик команд лямбда-бота не отвечает на команду с первого раза. У пользователя Telegram нет ответа.

Я приведу и пример:

  1. Я поставил команду 1. Результат: нет ответа.
  2. Я поставил команду 2. Результат: ответ на команду 1.
  3. Я поставил команду 3. Результат: ответ на команду 2
  4. Я поставил команду 4. Результат: ответ на команду 3

и так далее ... что не так?

exports.handler = (event, context) => {
  // Message
  let message;
  if (event.body.channel_post && event.body.channel_post.text) {
    message = event.body.channel_post.text;
  } else if (event.body.message && event.body.message.text) {
    message = event.body.message.text;
  }
  const processCommand = processCommands(message);

  // Chat ID
  let chatId;
  if (event.body.message && event.body.message.chat && event.body.message.chat.id) {
    chatId = event.body.message.chat.id;
  } else if (event.body.channel_post && event.body.channel_post.chat && event.body.channel_post.chat.id) {
    chatId = event.body.channel_post.chat.id;
  }

  if (chatId) {
    processCommand.then((response) => {
      const processTelegram = sendMessageToTelegram(chatId, response);
      processTelegram.then(() => {
        context.succeed();
      }).catch(() => {
        context.fail();
      });
    }).catch((error) => {
      const processTelegram = sendMessageToTelegram(chatId, error.message);
      processTelegram.then(() => {
        context.succeed();
      }).catch(() => {
        context.fail();
      });
    });
  } else {
    processCommand.then(() => {
      context.succeed();
    }).catch(() => {
      context.fail();
    });
  }

  return processCommand;
};
...