Idée
Dans les dialogues de télégramme, j'utilise très souvent le robot de télégramme: inlatexbot . Il vous permet d'insérer du latex directement dans la boîte de dialogue du télégramme - c'est pratique: la notation mathématique peut être envoyée avec une image claire afin que
, pas si sqrt (4) * 2 ^ x * 1/3 = 1024 .
Mais pas moins souvent, j'ai besoin de la fonctionnalité WolframAlpha dans un télégramme : calculer une facture complexe pour une fête avec des amis, divers pourcentages, résoudre une équation, etc.
Connexion Wolfram
J'ai trouvé l'API Wolfram Alpha pour python (https://pypi.org/project/wolframalpha/). La documentation est très claire et vous pouvez faire tout ce qui est disponible dans la version Web. Certes, il existe une limitation de l'API gratuite Wolfram à 2000 requêtes par mois. Le code qui fonctionne avec le tungstène est extrêmement simple et est sorti en 4 lignes pour moi.
import wolframalpha
client = wolframalpha.Client('TOKEN')
res = client.query(query)
print(next(res.results).text)
Dans les deux premières lignes, j'importe le module wolframalpha, je crée un client avec mon APP ID - vous devez d'abord vous inscrire auprès de wolfram et l'obtenir, puis vous pouvez envoyer des demandes à tungstène et simplement imprimer le résultat de ce que Wolfram Alpha a reçu. Tout fonctionne - vous pouvez maintenant commencer à intégrer avec Telegram.
Intégration dans le bot Telegram
Il reste à tout relier et à envoyer les requêtes reçues de Telegram à Wolfram et à donner une réponse à l'utilisateur. Je crée un bot dans @BotFather, j'active le mode en ligne dans les paramètres pour que le bot fonctionne directement dans la boîte de dialogue Telegram. J'utilise un exemple de bot en ligne de GitHub pour Telegram et j'envoie une réponse à l'utilisateur. Voici à quoi ressemble la partie la plus importante du code.
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)
Comment ça fonctionne?
C'est très simple - directement dans la boîte de dialogue, j'entre @calcherebot 12 + 15 et cela me donne la réponse 27 . Un bot dans un télégramme simplifie non seulement le processus de calcul de quelque chose, mais aussi le processus de diverses preuves, par exemple, vous pouvez connaître la population de Moscou ou le poids moyen d'une personne et le bot change en quelque sorte la communication: les captures d'écran de calculatrices, Wikipédia ou d'autres sources ne sont plus nécessaires - maintenant tout peut être consulté dans le dialogue.
Et après?
Jusqu'à présent, le bot fonctionne localement et ne prend en charge que 2000 demandes par mois, ce qui est très petit pour un usage public. Je prévois de le réviser pour une utilisation massive par tous ceux qui en ont besoin: étudiants, scientifiques, juste des personnes qui ont besoin de calculer ou de prouver quelque chose de juste dans le télégramme. Si vous avez des idées ou des suggestions d'amélioration (très probablement, car le bot a été écrit en quelques heures) écrivez-moi par mail: rk-helper@yandex.ru