¿Cómo enviar un dado o dardo desde nuestro bot de Telegram?

Desde el 30 de marzo del 2020, con el lanzamiento de la Bot API v4.7 se añadió un nuevo método llamado sendDice() que nos permite enviar un dado, el número que mostrará el dado lo deciden los servidores de Telegram. Posteriormente el 24 de abril del 2020 con el lanzamiento de la Bot API v4.8 se introdució el soporte para enviar dardos usando el mismo método.

Enviar un dado 🎲

Para enviar un dado solo tenemos que indicarle al bot el id del chat donde tiene que enviarlo, la decisión del número del dado mostrado lo decidirá el propio servidor de Telegram. En este ejemplo cuando enviamos el comando /dado recibiremos un dado.

bot.onText(/^\/dado/, (msg) => {
  bot.sendDice(msg.chat.id);
});

Enviar un dardo

La diferencia entre enviar un dado o un dardo es que tenemos que pasarle un segundo parámetro al método sendDice() en el cual le indicamos el emoji de la diana, si no le pasamos este segundo parámetro por defecto siempre nos enviará un dado. En este ejemplo cuando ponemos el comando /dardo el bot nos enviará un dardo animado.

bot.onText(/^\/dardo/, (msg) => {
  const opts = {
      'emoji': '🎯'
  }
  bot.sendDice(msg.chat.id, opts);
});

¿Cómo puedo obtener el valor del dado/dardo?

Seguramente ahora tengas la duda de como puedes recoger el valor del dado una vez lo enviamos y Telegram le asigna el valor. Este proceso es muy sencillo, solo tenemos que añadir la función .then(..) para recoger el resultado. En este caso le llame "info" al parámetro que le paso a la función anónima (sin nombre) pero le podéis llamar como queráis al párametro.

bot.onText(/^\/dado/, (msg) => {
  bot.sendDice(msg.chat.id).then(function (info) {
    console.log(info);
  });
});

La función .then(..) recogerá el mensaje que nos devuelve la API de Bots de Telegram con la información sobre el valor del dado/dardo en un JSON en el parámetro "info" de la función anónima que creamos anteriormente. La información que podemos obtener es el id del mensaje, la información del chat, la fecha y la información sobre el dado.

{
dice: { emoji: '🎲', value: 5 }
}

En resumen, este método no es muy complejo como podéis ver es bastante simple de usar y espero que este tutorial os sirva para resolver todas las dudas al respecto al mismo.