[Python, API, Математика] Калькулятор Wolframalpha в диалоге Telegram

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
14-Авг-2020 16:30

Идея
В диалогах телеграма я очень часто использую телеграм бот: inlatexbot. Он позволяет вставлять Latex прямо в диалоге телеграма — это удобно: математическое обозначение можно отправить понятной картинкой, чтобы было так $$display$$\sqrt{4} * 2^x * \frac {1} {3}=1024$$display$$, а не так sqrt(4)*2^x * 1/3 =1024.
Но не менее часто, мне в телеграме необходим функционал WolframAlpha: посчитать сложный счет за вечеринку с друзьями, различные проценты, решить уравнение и так далее — полный функционал WolframAlpha, но при этом не выходить из диалога телеграма.
Подключение Wolfram
Я нашел Wolfram Alpha API для python (https://pypi.org/project/wolframalpha/). Документация предельно понятная и можно сделать все, что доступно в веб версии. Правда, есть ограничение бесплатного Wolfram API на 2000 запросов в месяц. Код, который работает с вольфрамом предельно простой и у меня вышел в 4 строки.
import wolframalpha
client = wolframalpha.Client('TOKEN')
res = client.query(query)
print(next(res.results).text)

В первых двух строчках я импортирую модуль wolframalpha, создаю client со своим APP ID — необходимо предварительно зарегистрироваться в wolfram и получить его, далее можно отправлять запросы к вольфраму и просто делаю принт результат того, что получил Wolfram Alpha. Все работает — теперь можно приступать к интегрированию с Telegram.
Интегрирование в Телеграм бот
Осталось соединить все вместе и отправлять запросы, полученные из Телеграм в Вольфрам и выдавать ответ юзеру. Создаю бот в @BotFather, в настройках включаю режим inline, чтобы бот работал прямо в диалоге Телеграм. Использую пример inline бота из GitHub для Телеграм, и отправляю ответ юзеру. Вот как выглядит самая важная часть кода.
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)

Как это работает?
Очень просто — прямо в диалоге я ввожу @calcherebot 12 + 15 и мне выдает ответ 27. Бот в телеграме упрощает не только процесс подсчетов чего-либо, но и процесс различных доказательств, например можно узнать население Москвы или средний вес человека и бот в каком-то смысле меняет коммуникацию: больше не нужны скриншоты калькуляторов, википедии или других источников — теперь все может быть доступно в диалоге.

Что дальше?
Пока что бот работает локально и поддерживает всего лишь 2000 запросов в месяц, что очень мало для публичного использования. В моих планах его доработка для массового использования всем, кому это необходимо: студентам, ученым, просто людям которым нужно что-то посчитать или доказать прямо в телеграме. Если у вас есть идеи или пожелания по доработке( скорее всего они есть, так как бот был написан за пару часов) напишите мне на почту: rk-helper@yandex.ru
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_python, #_api, #_matematika (Математика), #_python, #_telegram, #_boty_dlja_messendzherov (боты для мессенджеров), #_wolframalpha, #_python, #_api, #_matematika (
Математика
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 15:07
Часовой пояс: UTC + 5