Calculadora Wolframalpha en el diálogo Telegram

Idea



En los diálogos de telegramas, utilizo con mucha frecuencia el bot de telegramas: inlatexbot . Le permite insertar Látex directamente en el cuadro de diálogo del telegrama; esto es conveniente: la notación matemática se puede enviar en una imagen clara para que sea así

42X13=1024

, no así sqrt (4) * 2 ^ x * 1/3 = 1024 .

Pero no con menos frecuencia, necesito la funcionalidad WolframAlpha en un telegrama : calcular una factura compleja para una fiesta con amigos, varios porcentajes, resolver una ecuación, etc., la funcionalidad completa de WolframAlpha, pero al mismo tiempo no abandonar el diálogo del telegrama.



Conexión Wolfram



Encontré la API Wolfram Alpha para python (https://pypi.org/project/wolframalpha/). La documentación es muy clara y puedes hacer todo lo que está disponible en la versión web. Es cierto que existe una limitación de la API gratuita de Wolfram a 2000 solicitudes por mes. El código que funciona con tungsteno es extremadamente simple y me salió en 4 líneas.



import wolframalpha
client = wolframalpha.Client('TOKEN')
res = client.query(query)
print(next(res.results).text)


En las dos primeras líneas, importo el módulo wolframalpha, creo un cliente con mi ID de aplicación; primero debe registrarse con wolfram y obtenerlo, luego puede enviar solicitudes a tungsteno e imprimir el resultado de lo que Wolfram Alpha recibió. Todo funciona, ahora puede comenzar a integrarse con Telegram.



Integración en el bot de Telegram



Queda por conectar todo junto y enviar las solicitudes recibidas de Telegram a Wolfram y dar una respuesta al usuario. Creo un bot en @BotFather, enciendo el modo en línea en la configuración para que el bot funcione directamente en el cuadro de diálogo de Telegram. Utilizo un ejemplo de un bot en línea de GitHub para Telegram y le envío una respuesta al usuario. Así es como se ve la parte más importante del código.



def inlinequery(update, context):
    """Handle the inline query."""
    query = update.inline_query.query
    print(query)
    res = client.query(query)
    results = [
        InlineQueryResultArticle(
            id=uuid4(),
            title="Magic answer is here!",
            input_message_content=InputTextMessageContent(
                "{} => *{}*".format(query, next(res.results).text),
                parse_mode=ParseMode.MARKDOWN))]
    update.inline_query.answer(results)


¿Cómo funciona?



Es muy simple: justo en el cuadro de diálogo ingreso @calcherebot 12 + 15 y me da la respuesta 27 . Un bot en un telegrama simplifica no solo el proceso de calcular algo, sino también el proceso de varias pruebas, por ejemplo, puede averiguar la población de Moscú o el peso promedio de una persona y el bot en cierto sentido cambia la comunicación: las capturas de pantalla de calculadoras, Wikipedia u otras fuentes ya no son necesarias, ahora todo se puede acceder en el diálogo.







¿Que sigue?



Hasta ahora, el bot funciona localmente y solo admite 2,000 solicitudes por mes, lo cual es muy pequeño para uso público. Planeo revisarlo para su uso masivo por todos los que lo necesiten: estudiantes, científicos, solo personas que necesitan calcular o probar algo correcto en el telegrama. Si tiene ideas o sugerencias para mejorar (lo más probable es que lo sean, ya que el bot se escribió en un par de horas) escríbame por correo electrónico: rk-helper@yandex.ru



All Articles