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

286
Vistas
Discord: agregue una imagen de Google Drive en el mensaje incrustado

Tengo una lista de archivos que estoy recuperando de Drive:

 const list = await drive.files.list({ q: `parents in '${process.env.DRIVE_DIR}' and name contains 'test_'`, spaces: 'drive', fields: 'files(id, mimeType, webViewLink)' })

Después de obtener los archivos, quiero enviar mensajes incrustados con la imagen de Drive:

 const embed = new MessageEmbed() .setColor('#6adada') .setTitle('Test') .setImage(list.data.files[index].webViewLink) message.channel.send({embeds: [embed]})

Revisé todos los permisos en Google Drive y son correctos, si accedo al enlace como invitado, puedo ver la imagen en el navegador. ¿Hay algo que me estoy perdiendo? Gracias por adelantado.

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

0

Resolví este problema usando FS para descargar el archivo de la unidad, luego lo adjunté al mensaje incrustado usando la ruta de attachment en la función setImage . Entonces, después de obtener la list de archivos, la descargo (en mi caso, siempre será un archivo):

 const { data } = await drive.files.get( { fileId: list.data.files[0].id, alt: "media" }, { responseType: "stream" } ) const fileName = fID + "." + mimeType.split("/")[1] const file = fs.createWriteStream(fileName) data.on("end", () => { const embed = new MessageEmbed() .setColor('#6adada') .setTitle('Test Image') .setImage('attachment://' + fileName) message.channel.send({ embeds: [embed], files: [fileName] }) .then(() => { file.end() fs.unlinkSync(fileName) }) }) .on("error", error => message.reply(" Error: " + error.message)) .pipe(file)
about 4 years ago · Juan Pablo Isaza Denunciar

0

Debe enviar webViewLink a discord, donde cambia el parámetro de consulta usp en la URL de drivesdk a sharing.

Como referencia, esta es la API de webhook entrante de Discord: https://discord.com/developers/docs/resources/webhook#execute-webhook

la API de reposo de Google Drive: https://developers.google.com/drive/api/v3/reference/files#resource

Echa un vistazo a una implementación simple aquí:

Implementación de ejemplo Ejecutar en Fusebit
 const { Integration } = require('@fusebit-int/framework'); const superagent = require('superagent') const integration = new Integration(); const router = integration.router; const googleConnector = 'googleConnector'; const discordConnector = 'discordConnector'; router.post('/api/tenant/:tenantId/test', async (ctx) => { try { const googleClient = await integration.tenant.getSdkByTenant(ctx, googleConnector, ctx.params.tenantId); const files = await googleClient .drive({ version: 'v3', }) .files.list({fields: 'files(id, mimeType, webViewLink)'}); const file = files.data.files[0] file.webViewLink = file.webViewLink.replace('drivesdk', 'sharing') await discordSendMessage(ctx, file.webViewLink) ctx.body = { message: `Message with embed sent to discord.`, }; } catch (e) {console.log(e)} }); async function discordSendMessage(ctx, content) { const discordClient = await integration.tenant.getSdkByTenant( ctx, discordConnector, ctx.params.tenantId ); const webhook = discordClient?.fusebit?.credentials?.webhook; if (!webhook) { ctx.throw(404, `The installation does not have a default webhook channel.`); } try { return await superagent.post(webhook.url).send({ content })} catch (e) {console.log(e)} } module.exports = integration;
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