¿Cómo enviar un mensaje como una copia con nuestro Bot de Telegram?

El 4 de noviembre del 2020 con la llegada de la versión 5.0 de la Telegramn Bot Api se añadieron nuevos métodos y entre ellos se encuentra el copyMessage del que hablaremos en este post junto con otro método que realiza una función similar.

El método copyMessage() sirve para copiar mensajes de cualquier tipo sin llevar ninguna mención sobre el usuario que envio ese mensaje. Existe otro método es similar llamado forwardMessage() para reenviar mensajes, pero a diferencia del copyMessage() este no copia el enlace al mensajes original.

Reenvió normal VS Reenvió como copia

Tanto el método copyMessage() como el forwardMessage() tienen que recibir por lo menos 3 parámetros que son los siguientes:

  • chat_id: Id del chat a donde queremos reenviar el mensaje
  • from_chat_id: Id del chat donde esta el mensaje que queremos reenviar
  • message_id: Id del mensaje que queremos reenviar

A continuación os dejo dos trozos de código de ejemplo donde usamos estos métodos en dos comandos distintos para que podáis apreciar la diferencia entre los dos y compáralos con los resultados que obtuvimos el la captura que tenéis unas líneas más arriba.

Reenvió normal de un mensaje con el método forwardMessage()

bot.onText(/^\!reenviar/, (msg) => {
var chat_id = msg.chat.id;
var from_chat_id = msg.chat.id;
var message_id = msg.reply_to_message.message_id

 // Método para reenviar el mensaje
 bot.forwardMessage(chat_id, from_chat_id, message_id);

});

Nota: Este método devuelve un objecto con la información completa del mensaje.

Reenvió de un mensaje con el método copyMessage()

bot.onText(/^\!copiar/, (msg) => {
var chat_id = msg.chat.id;
var from_chat_id = msg.chat.id;
var message_id = msg.reply_to_message.message_id
 
 // Método para reenviar el mensaje como copia
 bot.copyMessage(chat_id, from_chat_id, message_id);
    
});

Nota: Este método devuelve el id del mensaje enviado en caso de que el resultado fuera correcto.

¿Cómo puedo capturar los valores que devuelven?

Para poder capturar estos mensajes que devuelve la ejecución de estos métodos necesitamos tener un callback (función de devolución de llamada). En este ejemplo usamos el método .then() que recibe como párametro un callback con un parámetro (msg en este caso).

bot.copyMessage(chat_id, from_chat_id, message_id).then(msg => {
    console.log(msg); // Mostramos por consola el mensaje que nos devuelve
});

Nota: Un callback es una función que se ejecutará después de que se complete la ejecución del método anterior al que llamamos.

Espero que este pequeño tutorial os ayudará a entender el funcionamiento de estos dos métodos y de su uso. Os esperamos en próximos tutoriales.