考え
テレグラムダイアログでは、テレグラムボットinlatexbotをよく使用します。テレグラムダイアログに直接ラテックスを挿入することができます-これは便利です:数学的な表記を鮮明な画像で送信できるため、次のようになります
、そうではありませんsqrt(4)* 2 ^ x * 1/3 = 1024。
しかし、それほど頻繁ではありませんが、テレグラムにWolframAlpha機能が必要です。友人とのパーティーの複雑な請求書の計算、さまざまなパーセンテージ、方程式の解法など、WolframAlphaの全機能ですが、同時にテレグラムダイアログを離れないでください。
Wolfram接続
python用のWolframAlpha API(https://pypi.org/project/wolframalpha/)を見つけました。ドキュメントは非常に明確であり、Webバージョンで利用可能なすべてを行うことができます。確かに、無料のWolfram APIには、1か月あたり2,000リクエストという制限があります。タングステンで動作するコードは非常に単純で、私にとっては4行で出てきました。
import wolframalpha
client = wolframalpha.Client('TOKEN')
res = client.query(query)
print(next(res.results).text)
最初の2行で、wolframalphaモジュールをインポートし、APP IDを使用してクライアントを作成します。最初にwolframに登録して取得する必要があります。次に、リクエストをタングステンに送信して、WolframAlphaが受信した結果を出力するだけです。すべてが機能します。これで、Telegramとの統合を開始できます。
Telegramボットへの統合
すべてを接続し、Telegramから受信したリクエストをWolframに送信し、ユーザーに回答することは残っています。@BotFatherでボットを作成し、設定でインラインモードをオンにして、ボットが[テレグラム]ダイアログで正しく機能するようにします。GitHub for Telegramのインラインボットの例を使用して、ユーザーに応答を送信します。これは、コードの最も重要な部分がどのように見えるかです。
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)
使い方?
非常に簡単です。ダイアログで@ calcherebot12 + 15と入力すると、27という答えが返されます。電報のボットは、何かを計算するプロセスだけでなく、さまざまな証明のプロセスも簡素化します。たとえば、モスクワの人口や人の平均体重を見つけることができ、ボットはある意味でコミュニケーションを変えます。計算機、ウィキペディア、その他のソースのスクリーンショットは不要になりました。対話でアクセスできます。
次は何ですか?
これまでのところ、ボットはローカルで動作し、月に2,000リクエストしかサポートしていません。これは、一般に使用するには非常に小さいです。学生、科学者、電報で何かを計算または証明する必要がある人など、それを必要とするすべての人が大量に使用できるように改訂する予定です。改善のためのアイデアや提案がある場合(ボットは数時間で作成されたため、おそらくそうです)、メールで私に書いてください:rk-helper@yandex.ru