Задать вопрос
@user3336191

Как отправить ответ в telegram используя ответ от парсера в node js?

Если просто парсить страницу и вывести ответ в консоль, то все работает правильно

63a1b75872630676285492.png

если этот ответ добавить к ответу telegram-бота с помощью await ctx.reply telegraph, возникает ошибка

node_modules\telegraf\lib\core\network\client.js:293
throw new error_1.default(data, { method, payload });
response: {
ok: false,
error_code: 400,
description: 'Bad Request: message text is empty'
},
on: {
method: 'sendMessage',
payload: { chat_id: 27190544, message_thread_id: undefined }
}
}

Node.js v18.12.1
[nodemon] app crashed - waiting for file changes before starting...

const { Telegraf, Markup } = require('telegraf');
const BOT_TOKEN = "*****************************************";
const bot = new Telegraf(BOT_TOKEN);
const axios = require("axios");
const cheerio = require("cheerio");

async function getString() {
    await axios.get("https://www.federalreserve.gov/releases/h10/current/").then((response) => {
      const $ = cheerio.load(response.data);
      const table = $("table");

      for (let i = 0; i < table.length; i++) {
        let tr = $(table[i]).find("tr")[4];
        console.log(tr.tostring());
        return $(tr).text();
      }
    })
    .catch((err) => console.log("Fetch error " + err));
  }
  
bot.start((ctx) => {
    ctx.reply('restart!')
});

bot.command('test', async (ctx) => {
    ctx.reply("Click it", Markup.inlineKeyboard(
        [
            [Markup.button.callback('PEACE', 'PEACE')]
        ]
    ))
});

bot.action('PEACE', async (ctx) => {
    await ctx.answerCbQuery()
    await ctx.reply(getString())
});


bot.launch();


Help me please
  • Вопрос задан
  • 176 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
SagePtr
@SagePtr
Еда - это святое
А принимает ли функция ctx.reply промис? может быть, нужно сделать так?
await ctx.reply(await getString())
Ответ написан
Комментировать
@user3336191 Автор вопроса
на оверфлоу подсказали как сделать
return await axios.get( and await ctx.reply(await getString())
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы