Idéia
Em diálogos de telegramas, eu uso frequentemente o bot de telegramas: inlatexbot . Ele permite que você insira Latex diretamente na caixa de diálogo do telegrama - isso é conveniente: a notação matemática pode ser enviada em uma imagem nítida para que seja assim
, não tão sqrt (4) * 2 ^ x * 1/3 = 1024 .
Mas não menos frequentemente, preciso da funcionalidade WolframAlpha no telegrama : calcular a conta complexa de uma festa com amigos, várias porcentagens, resolver a equação e assim por diante - a funcionalidade completa do WolframAlpha, mas ao mesmo tempo não sair do diálogo do telegrama.
Conexão Wolfram
Encontrei Wolfram Alpha API para python (https://pypi.org/project/wolframalpha/). A documentação é muito clara e você pode fazer tudo o que está disponível na versão web. É verdade que há uma limitação da API Wolfram gratuita de 2.000 solicitações por mês. O código que funciona com tungstênio é extremamente simples e saiu em 4 linhas para mim.
import wolframalpha
client = wolframalpha.Client('TOKEN')
res = client.query(query)
print(next(res.results).text)
Nas duas primeiras linhas, eu importo o módulo wolframalpha, crio um cliente com meu APP ID - você deve primeiro se registrar no wolfram e obtê-lo, então você pode enviar solicitações para tungstênio e apenas imprimir o resultado do que Wolfram Alpha recebeu. Tudo funciona - agora você pode começar a integrar com o Telegram.
Integração com o bot do Telegram
Resta conectar tudo junto e enviar as solicitações recebidas do Telegram para a Wolfram e dar uma resposta ao usuário. Eu crio um bot em @BotFather, ligo o modo inline nas configurações para que o bot funcione diretamente na caixa de diálogo do Telegram. Eu uso um exemplo de um bot inline do GitHub para Telegram e envio uma resposta ao usuário. Essa é a aparência da parte mais importante do 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)
Como funciona?
É muito simples - diretamente na caixa de diálogo, eu insiro @calcherebot 12 + 15 e ele me dá a resposta 27 . Um bot em um telegrama simplifica não só o processo de cálculo de algo, mas também o processo de várias provas, por exemplo, você pode descobrir a população de Moscou ou o peso médio de uma pessoa e o bot em um sentido muda a comunicação: screenshots de calculadoras, Wikipedia ou outras fontes não são mais necessárias - agora tudo pode ser acessado em diálogo.
Qual é o próximo?
Até agora, o bot funciona localmente e suporta apenas 2.000 solicitações por mês, o que é muito pequeno para uso público. Pretendo revisá-lo para uso em massa por todos que precisam: estudantes, cientistas, apenas pessoas que precisam calcular ou provar algo certo no telegrama. Se você tiver ideias ou sugestões para melhorias (provavelmente são, já que o bot foi escrito em algumas horas), escreva para mim por e-mail: rk-helper@yandex.ru