Ide
Dalam dialog telegram, saya sangat sering menggunakan bot telegram: inlatexbot . Ini memungkinkan Anda untuk memasukkan Latex langsung ke dialog telegram - ini nyaman: notasi matematika dapat dikirim dalam gambar yang jelas sehingga seperti ini
, tidak begitu akar persegi (4) * 2 ^ x * 1/3 = 1024 .
Tetapi tidak jarang, saya membutuhkan fungsionalitas WolframAlpha di telegram : hitung tagihan kompleks untuk pesta dengan teman, berbagai persentase, selesaikan persamaan, dan sebagainya - fungsionalitas penuh WolframAlpha, tetapi pada saat yang sama tidak meninggalkan dialog telegram.
Koneksi Wolfram
Saya menemukan Wolfram Alpha API untuk python (https://pypi.org/project/wolframalpha/). Dokumentasinya sangat jelas dan Anda dapat melakukan semua yang tersedia di versi web. Benar, ada batasan API Wolfram gratis pada 2.000 permintaan per bulan. Kode yang bekerja dengan tungsten sangat sederhana dan keluar dalam 4 baris untuk saya.
import wolframalpha
client = wolframalpha.Client('TOKEN')
res = client.query(query)
print(next(res.results).text)
Pada dua baris pertama, saya mengimpor modul wolframalpha, membuat klien dengan ID APP saya - Anda harus terlebih dahulu mendaftar dengan wolfram dan mendapatkannya, kemudian Anda dapat mengirim permintaan ke tungsten dan hanya mencetak hasil dari apa yang diterima Wolfram Alpha. Semuanya berfungsi - sekarang Anda dapat mulai berintegrasi dengan Telegram.
Integrasi ke bot Telegram
Tetap menghubungkan semuanya bersama-sama dan mengirim permintaan yang diterima dari Telegram ke Wolfram dan memberikan jawaban kepada pengguna. Saya membuat bot di @BotFather, mengaktifkan mode inline di pengaturan agar bot berfungsi tepat di dialog Telegram. Saya menggunakan contoh bot inline dari GitHub untuk Telegram, dan mengirimkan tanggapan kepada pengguna. Seperti inilah bagian terpenting dari kode itu.
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)
Bagaimana itu bekerja?
Ini sangat sederhana - tepat di dialog saya memasukkan @calcherebot 12 + 15 dan itu memberi saya jawaban 27 . Bot dalam telegram tidak hanya menyederhanakan proses menghitung sesuatu, tetapi juga proses berbagai bukti, misalnya, Anda dapat mengetahui populasi Moskow atau berat rata-rata seseorang dan bot dalam arti mengubah komunikasi: tangkapan layar kalkulator, Wikipedia, atau sumber lain tidak lagi diperlukan - sekarang semuanya bisa diakses dalam dialog.
Apa berikutnya?
Sejauh ini, bot berfungsi secara lokal dan hanya mendukung 2.000 permintaan per bulan, yang sangat kecil untuk penggunaan umum. Saya berencana merevisinya untuk digunakan massal oleh semua orang yang membutuhkan: pelajar, ilmuwan, hanya orang yang perlu menghitung atau membuktikan sesuatu yang benar di telegram. Jika Anda memiliki ide atau saran untuk perbaikan (kemungkinan besar, karena bot ditulis dalam beberapa jam) tulis kepada saya melalui surat: rk-helper@yandex.ru