Subir imágenes a Imgur usando un bot de Telegram en Nodejs

Subir imágenes a Imgur usando un bot de Telegram en Nodejs

Dado que subir imagenes a Imgur una a una es un trabajo costoso y una perdida de tiempo involuntaria, vamos a automatizar esta tarea para que al responder a una imagen con un comando, automáticamente se suba de manera anónima a Imgur y posteriormente nos devuelva el link de la foto.

Índice

  1. Generando Token de Imgur
  2. API y creación del código

Generando Token de Imgur

Para crear esta función en nuestro bot, necesitaremos lo siguiente:

  • Estar registrados en Imgur, posteriormente nos dirigimos a Imgur API e iniciamos sesión si lo requiere, ya sea con la cuenta de Google o vía Email.

Nos pedirá una serie de datos como:

  • El nombre de la aplicación. Da igual que nombre le des.
  • En Authorization Type, seleccionamos la segunda opción. De esta manera no nos pedira una direccion URL.
  • Añadiriamos nuestro correo electrónico y una breve descripción.

Resolvemos la Captcha y pulsamos en "Submit".

Una vez hecho esto, nos deberá mostrar nuestro ClientID y SecretID que posteriormente utilizaremos. Anotalos en un papel o en un archivo .txt

API y creación del código

La API que utilizaremos es imgur-node-api. Pese a que tenga alguna que otra vulnerabilidad, no es alarmante ya que la API solo se dedica a subir imágenes a Imgur desde Telegram.

Para instalarla solo debemos escribir en nuestro terminal: npm imgur-node-api

Ahora ya podemos trabajar en la parte del código.

// Importamos la libreria
const imgur = require('imgur-node-api');

// Creamos el comando
bot.onText(/^\/imgur/, function(msg){
    // Recogemos el chatId donde se realiza la petición-
    var chatId = msg.chat.id;

    /*
    Obligamos de alguna manera a que el usuario tenga que responder a una imagen que previamente haya sido enviada
    para poder obtener los datos que necesitamos para obtener el enlace de los servidores de Telegram.
    */

    // Le indicamos que si no respondemos a la imagen, no haga nada.
    if (msg.reply_to_message == undefined){
        return;
    }

    /*
    Visualizando el contenido mediante console.log(msg), se puede observar los parámetros de la imagen. 
    Habitualmente suele devolver un Array con 3 resultados. 
    Como recomendación, deja marcada por defecto la posición [2] del array, 
    principalmente por la calidad de la imagen.
    */

    var photo = msg.reply_to_message.photo[2].file_id
    // Con esto obtendríamos el id del archivo de los servidores de Telegram.

    bot.getFileLink(photo).then(function(enlace){
    // "enlace", devuelve la url de la imagen subida en Telegram
        console.log(enlace);
    })
})


  • Con esto, obtendríamos la imagen de los servidores de Telegram. Ahora haremos que dicha imagen se suba a Imgur y nos devuelva la url de la misma de la siguiente manera:
/*
Debemos dar nuestro clientId que previamente hemos solicitado para de alguna manera identificarnos. 
La subida de imagenes son totalmente anonimas.
*/

var clientId = 'TuClientId'

// Establecemos el cliente y procedemos a la subida

imgur.setClientID(clientId)

// Pasamos como parametro "enlace"

imgur.upload(enlace, function(err, res){
    // "res.data.link" devuelve la url de la imagen ya subida a Telegram
    console.log(res.data.link)
    var link = res.data.link;

    // Y por último, enviaremos el enlace en un mensaje
    bot.sendMessage(chatId, "Enlace de la imagen subida a Imgur: \n" + link)
})

  • Aquí, hemos creado una variable que aloja nuestro token de Imgur, posteriormente hemos establecido nuestro clientId para poder subir la imagen, pasandole como parámetro el enlace de la imagen subida a Telegram.
  • Una vez que esté subida a Imgur, el bot se encargará de devolvernos la url de la imagen finalmente subida a Imgur, quedando como resultado lo siguiente:

upload-images-imgur

Si tienes dudas o no entiendes alguna parte del código, puedes unirte a nuestro grupo de Telegram donde te podemos ayudar.


Share Tweet Send
0 Comments
Loading...
You've successfully subscribed to Tecnonucleous
Great! Next, complete checkout for full access to Tecnonucleous
Welcome back! You've successfully signed in
Success! Your account is fully activated, you now have access to all content.