Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram usando JavaScript del lado del cliente, es decir, desde el navegador web usando simplemente peticiones http con la función fetch.
Con lo mostrado aquí vas a ser capaz de enviar un mensaje a nombre de tu bot a cualquier usuario que haya interactuado con el bot y que no lo haya bloqueado, obviamente.
La ventaja de esto es que podrás enviar un mensaje a Telegram desde JavaScript sin usar librerías del lado del servidor a cualquier usuario actuando en nombre de tu bot.
Si ya cuentas con un token de bot y el id del usuario entonces prueba la demostración sin salir de tu navegador en el siguiente enlace: https://parzibyte.github.io/ejemplos-javascript/enviar-mensaje-telegram/
A lo largo del artículo te enseñaré el funcionamiento y código esencial además del código completo.
Entonces para comunicarte con un usuario de Telegram como si fueras un bot desde el navegador web debes hacer una petición a:
https://api.telegram.org/bot_TOKEN_/sendMessage
Por ejemplo, si tu bot tiene el token 123:asd
la URL sería:
https://api.telegram.org/bot123:asd/sendMessage
La petición es de tipo POST y debes enviar un JSON con las propiedades chat_id
y text
. El chat_id
es el id del usuario al que quieres enviar el mensaje y el text
es el mensaje que vas a enviar desde JavaScript hacia Telegram sin librerías.
Vas a encontrar más detalles sobre sendMessage
en: https://core.telegram.org/bots/api#sendmessage
He creado la siguiente función que recibe el id del chat (o id de usuario), el token otorgado por el BotFather y el mensaje que se quiere enviar a la API de Telegram desde el lado del cliente con JS:
const enviarMensaje = async (idChat, token, mensaje) => {
const url = `https://api.telegram.org/bot${token}/sendMessage`;
const respuestaHttp = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
chat_id: idChat,
text: mensaje,
}),
});
return {
respuesta: await respuestaHttp.json(),
codigo: respuestaHttp.status,
};
}
La API de Telegram está muy bien programada y te va a devolver información incluso cuando haya un error.
El código de respuesta está en respuestaHttp.status
que será 200 si todo fue bien y que puedes analizar en caso de que sea otro valor.
Por otro lado, la API siempre devolverá un JSON con la propiedad ok
que estará en true
en caso de que todo haya ido correctamente, pero que además traerá otras propiedades para depurar errores si es que ha ocurrido alguno.
El código completo lo encuentras en GitHub: https://github.com/parzibyte/ejemplos-javascript/tree/master/enviar-mensaje-telegram
La demostración se encuentra en: https://parzibyte.github.io/ejemplos-javascript/enviar-mensaje-telegram/
A partir de este ejemplo puedes crear aplicaciones más complejas desde el lado del cliente usando solamente JavaScript, aunque la especificación de la API permite consumirla desde cualquier lenguaje de programación.
Encuentra más detalles sobre la documentación de la API en: https://core.telegram.org/bots/api
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.