¿Cómo integrar las encuestas en nuetro Bot de Telegram?

El 14 de abril del 2019 se actualizó la API de Bots de Telegram a la versión 4.2 incluyendo el soporte para poder crear encuestas mediante Bots. Hace escasas dos semanas los desarrolladores de la API node-telegram-bot-api añadieron el soporte también para las encuestas.

En este post os vamos a enseñar como crear encuestas y detenerlas de una manera sencilla. Los métodos que vamos a ver son sendPoll (enviar la encuesta) y stopPoll (Sirve para detener la encuesta).

Método sendPoll

Este método tiene que llevar obligatoriamente 3 parámetros: id del chat, la pregunta y un Array con un mínimo de 2 elementos y un máximo de 10 elementos.

En este ejemplo usamos el bot.OnText para capturar cuando un usuario escribe el comando "/encuesta" o "! encuesta". Creamos una variable con cualquier nombre, en mi caso "poll_options" donde estamos guardando en un Array las opciones "Si" y "No" separadas por una coma.

⚠️ Importante: La encuesta solo se puede enviar a un grupo o canal y no por privado a un usuario concreto así que deberéis filtrar por tipo de chat

Una vez tenemos el Array creado con el método bot.sendPoll enviamos la encuesta al chat desde el cual se mando el comando anteriormente mencionado.

bot.onText(/^\!encuesta|^\/encuesta/, (msg) => {

var	poll_options = ["Si","No"]; // Mínimo 2 y máximo 10 opciones 
bot.sendPoll(msg.chat.id, "Encuesta 1",poll_options);

});

Método stopPoll

Para detener una encuesta que tenemos previamente creada necesitamos usar el método stopPoll para parar la encuesta, necesitamos pasarle también los parámetros del id del chat/canal y el id de mensaje que corresponde a la encuesta previamente creada.

Para hacer el código más simple lo que hacemos es que sea necesario que el usuario responda a la encuesta con el comando detener, así recibiremos mediante el bot el id del mensaje al que respondemos (msg.reply_to_message.message_id).

bot.onText(/^\!detener|^\/detener/, (msg) => {

var replyId_messageId = msg.reply_to_message.message_id;
bot.stopPoll(msg.chat.id,replyId_messageId);

 });

La mejor opción sería guardar en un archivo, base de datos o similar el id del mensaje de la encuesta para posteriormente cerrar las encuestas con botones por poner un ejemplo. Las posibilidades son muy variadas, en este post quisimos enseñaros el funcionamiento de estos dos métodos de una forma sencilla y fácil.