Estoy escribiendo un bot de Telegram. Hay un código de trabajo que responde a los mensajes del usuario, busca la base de datos de coincidencia de palabras clave y envía el resultado al usuario. El problema es que el resultado de la muestra entra en la consola, ¿cómo enviarlo al usuario? Por favor ayuda
bot.on('message', (ctx) => { const text = ctx.text const log = sequelize.query("SELECT book FROM books t WHERE (t.*)::text LIKE '%"+ text +"%'") .then( (result) => { console.log(result,log) }) .catch( (err) => { console.log(err); for (const result of results) { ctx.reply(result.book); } }) })Basado en la API de sendMessage y los datos en el message Su código debería verse así:
const { QueryTypes } = sequelize; bot.on('message', async (message) => { const {text, chat} = message; // https://core.telegram.org/bots/api#message const {id: chatId} = chat; // https://core.telegram.org/bots/api#chat let response = ''; try { const rows = await sequelize.query( 'SELECT book FROM books t WHERE (t.*)::text LIKE :searchText', { replacements: { searchText: `%${text}%` }, type: QueryTypes.SELECT, } ); console.log('ROWS:', rows); if (rows.length) { response = rows.map(row => row.book).join("\n"); } else { response = 'Book not found'; } } catch (error) { console.error(error.message); response = 'Unable to lookup'; } finally { if (response) { bot.sendMessage(chatId, response); } } })Consultar manuales: