¿Cómo diseñar un bot meteorológico en Telegram usando JavaScript?

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:

  1. Conocimiento de JavaScript y configuración de un entorno de Node.
  2. La última versión de Node (versión > 10)
  3. 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:

Información meteorológica usando el bot de Telegram

Publicación traducida automáticamente

Artículo escrito por kunal1210 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *