El bot de Telegram se puede usar para conocer los detalles completos del clima de cualquier ciudad, estado o país sin usar otra aplicación. Telegram proporciona un montón de métodos API para realizar diferentes funciones. Puede usar la API del bot de Telegram para crear un Chatbot que devuelva la información meteorológica sobre una ciudad, estado o país según los parámetros y el comando enviado al bot.
requisitos previos:
- Conocimiento de JavaScript y configuración de un entorno de Node.
- La última versión de Node (versión > 10)
- La última versión de npm (versión > 6)
Comando para verificar si Node y npm están presentes en su sistema:
$ npm --v 6.14.5 $ node --version v10.15.0
Creando Bot y obteniendo el token API:
- Abra la aplicación Telegram y busque @BotFather.
- Haz clic en el botón de inicio o envía “/start”.
- Luego envíe el mensaje «/newbot» para configurar un nombre y un nombre de usuario.
- El BotFather luego le dará un token de API.
Obtener la clave de la API meteorológica:
- Vaya al sitio web del mapa meteorológico abierto .
- Cree una cuenta según el límite.
- Recibirá su propia clave API.
- Lea la documentación si desea utilizar diferentes parámetros en lugar del nombre de la ciudad.
Instalación de módulos:
Requests de instalación y node-telegram-bot-api (módulo Node.js para interactuar con la API oficial de Telegram Bot)
$ npm install --save requests node-telegram-bot-api
Nombre de archivo: tiempo.js
Javascript
// Requiring modules var TelegramBot = require('node-telegram-bot-api') var request = require('request') // Token obtained from bot father var token = "YOUR_TELEGRAM_BOT_TOKEN" var bot = new TelegramBot(token, { polling: true }); // Create a bot that uses 'polling' to // fetch new updates bot.on("polling_error", (err) => console.log(err)); // The 'msg' is the received Message from user and // 'match' is the result of execution above // on the text content bot.onText(/\/city (.+)/, function (msg, match) { // Getting the name of movie from the message // sent to bot var city = match[1]; var chatId = msg.chat.id var query = 'http://api.openweathermap.org/data/2.5/weather?q=' + city + '&appid=YOUR_WEATHER_API_KEY' // Key obtained from openweathermap API request(query, function (error, response, body) { if (!error && response.statusCode == 200) { bot.sendMessage(chatId, '_Looking for details of_ ' + city + '...', { parse_mode: "Markdown" }) .then(msg) { res = JSON.parse(body) var temp = Math.round((parseInt( res.main.temp_min) - 273.15), 2) // Kelvin to celsius and then round // off and conversion to atm var pressure = Math.round(parseInt( res.main.pressure) - 1013.15) var rise = new Date(parseInt( res.sys.sunrise) * 1000); var set = new Date(parseInt( res.sys.sunset) * 1000); // Unix time to IST time conversion bot.sendMessage(chatId, '**** ' + res.name + ' ****\nTemperature: ' + String(temp) + '°C\nHumidity: ' + res.main.humidity + ' %\nWeather: ' + res.weather[0].description + '\nPressure: ' + String(pressure) + ' atm\nSunrise: ' + rise.toLocaleTimeString() + ' \nSunset: ' + set.toLocaleTimeString() + '\nCountry: ' + res.sys.country) } // Sending back the response from // the bot to user. The response // has many other details also // which can be used or sent as // per requirement } }) })
Pasos para ejecutar el programa: Ejecute el archivo weather.js usando el siguiente comando:
$ node weather.js
Vaya a su bot y escriba /city city-name y vea los resultados.
Producción: