Telegram Bot Node JS polling error

Простой бот вопросник-ответчик на node.js, бот получает сообщение, сравнивает его с базой данных файла .json, если присутствует погрешность в формировании вопроса - поправляет (с помощью fuzzy) и отвечает:

const TelegramBot = require('node-telegram-bot-api');
const fuzzy = require('fuzzy');
const data = require('./questions_and_answers.json'); // JSON файл
const token = 'xxxxxxxxxxxx';
const bot = new TelegramBot(token, {polling: true});

bot.on('message', (msg) => {
  const userQuestion = msg.text.toLowerCase();
  let bestMatch, bestRatio = 0;

  // Поиск наиболее похожего вопроса
  for (const question of data) {
    const ratio = fuzzy.ratio(userQuestion, question.question.toLowerCase());
    if (ratio > bestRatio) {
      bestMatch = question;
      bestRatio = ratio;
    }
  }

  // Отправка ответа с учетом погрешности
  if (bestRatio > 80) { // Порог соответствия
    const answer = Array.isArray(bestMatch.answer) ? bestMatch.answer.join(", ") : bestMatch.answer;
    bot.sendMessage(msg.chat.id, `Вы имели в виду: ${bestMatch.question}? \n\n Ответ: ${answer}`); 
  } else {
    bot.sendMessage(msg.chat.id, "Извините, я не знаю ответа на этот вопрос.");
  }
});

Структура json файла максимально простая:

[
    {
      "question": "ВОПРОС1",
      "answer": "ОТВЕТ1 " 
    },
    {
        "question": "ВОПРОС2",
        "answer": "ОТВЕТ2" 
    }.....
..........
]

При отправки любого сообщения боту, консоль выдает: error: [polling_error] {}

Пробовал менять API в botFather, проверил атрибуты доступа, пытался запустить бота как с помощью обычной Командной строки, так и с помощью строки администратора


Ответы (1 шт):

Автор решения: Деметрий Рейн

Я добавил в код вывод сообщений об ошибках:

bot.on('polling_error', console.log);
bot.on('webhook_error', console.error); 

И более точно узнал причину по которой не работала моя программа:

TypeError: fuzzy.ratio is not a function

Теперь бот работает, возможно стандартная библиотека fuzzy слишком устаревшая для более нового Node.js. (вероятнее всего не правильно вызывал функционал fuzzy.ratio)

Я использовал fuzzball (https://www.npmjs.com/package/fuzzball#installation), незначительно изменив код, все работает как и задумывалось.

→ Ссылка