Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

186
Vistas
¿Cómo guardar datos de Telegram en una hoja de cálculo de Google?

Creé un bot de Telegram simple usando Telegraf y usé este código para registrar una información específica que necesito:

 bot.on('text', (ctx, next) => { console.log(`[text] ${ ctx.message.chat.id } ${ ctx.from.username } ${ ctx.message.chat.first_name+ " " + ctx.message.chat.last_name } ${ ctx.message.text }`); return next(); });

y como resultado, el registro será algo como esto

[texto] 563789142 xMA3x Mohammed Abbas / inicio

Ahora quiero guardar esa información en una hoja de cálculo de Google, seguí este tutorial y pude insertar valores marcados con comillas solo en la hoja de cálculo, pero no sé cómo insertar el resultado de console.log en la hoja de cálculo

de todos modos, aquí está mi código

 const { Telegraf } = require('telegraf'); const bot = new Telegraf("xyz") const { google } = require("googleapis"); const keys = require("./Keys.json") bot.on('text', (ctx, next) => { console.log(`[text] ${ ctx.message.chat.id } ${ ctx.from.username } ${ ctx.message.chat.first_name+ " " + ctx.message.chat.last_name } ${ ctx.message.text }`); return next(); }); bot.start((ctx) => ctx.reply('Welcome')) bot.help((ctx) => ctx.reply('Send me a sticker')) bot.on('sticker', (ctx) => ctx.reply('👍')) bot.hears('hi', (ctx) => ctx.reply('Hey there')) const client = new google.auth.JWT( keys.client_email, null, keys.private_key, ["https://www.googleapis.com/auth/spreadsheets"] ); client.authorize(function(err){ if(err){ console.log(err); return; } else { console.log("connected"); gsrun(client); } }); async function gsrun(cl){ const gsapi = google.sheets({version:"v4", auth: cl}); const updateOptions = { spreadsheetId: "xyz", range: "Sheet1", valueInputOption: "RAW", insertDataOption: "INSERT_ROWS", resource: { values:[ ["this is working"] ]} }; let res = await gsapi.spreadsheets.values.append(updateOptions); console.log(res); } bot.launch()

entonces, como puede ver, "esto está funcionando" se inserta correctamente en la hoja de cálculo, pero cuando intento agregar otro valor como ctx.message.chat.id , me da ReferenceError: ctx no está definido

Entonces, ¿cómo puedo hacer que la API de la hoja de Google reconozca los comandos de Telegraf? o para ser más general, ¿cómo puedo guardar la información de *ctx.message.chat.id,ctx.from.username..etc * (que proviene del telegrama) en el spreedhsset?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

ctx vive dentro de los ganchos de su bot, por lo que para guardar la información en la hoja, debe llamar a su función googlesheets dentro del gancho relevante.

Posibles actualizaciones:

 const { Telegraf } = require('telegraf'); const bot = new Telegraf("xyz") const { google } = require("googleapis"); const keys = require("./Keys.json") const client = new google.auth.JWT( keys.client_email, null, keys.private_key, ["https://www.googleapis.com/auth/spreadsheets"] ); async function gsrun(cl, data){ const gsapi = google.sheets({version:"v4", auth: cl}); const updateOptions = { spreadsheetId: "xyz", range: "Sheet1", valueInputOption: "RAW", insertDataOption: "INSERT_ROWS", resource: { values:[ [data] ]} }; let res = await gsapi.spreadsheets.values.append(updateOptions); console.log(res); } const saveMetadataToSheets = (data) => { client.authorize(function(err){ if(err){ console.log(err); return; } else { console.log("connected"); gsrun(client, data); } }); } bot.on('text', (ctx, next) => { const data = `[text] ${ ctx.message.chat.id } ${ ctx.from.username } ${ ctx.message.chat.first_name+ " " + ctx.message.chat.last_name } ${ ctx.message.text }` console.log(data); // pass any data that you need to save to the sheets saveMetadataToSheets(data) return next(); }); bot.start((ctx) => ctx.reply('Welcome')) bot.help((ctx) => ctx.reply('Send me a sticker')) bot.on('sticker', (ctx) => ctx.reply('👍')) bot.hears('hi', (ctx) => ctx.reply('Hey there')) bot.launch()
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda