Image

(Dernier changement: 06.11.2024)

Pour tester la fonctionnalité du bot WikiPedia Python, nous avons utilisé serveur de bot télégramme préconfiguré. Ce bot peut répondre aux requêtes contenues dans la base de données WikiPedia et envoyer des informations en réponse.

Procédons à l'installation:

source my-tel-bot/bin/activate
pip3 install wikipedia

Remplaçons notre bot de démonstration par celui existant:

/root/my-tel-bot/bot.py

import telebot, wikipedia, re

# Créer une instance du bot
bot = telebot.TeleBot('Clé reçue de @BotFather')

# Installer la langue russe dans Wikipedia
wikipedia.set_lang("ru")

# Nous nettoyons le texte de l'article dans Wikipédia et le limitons à mille caractères
def getwiki(s):
try:
ny = wikipedia.page(s)

# Obtenir les mille premiers caractères
wikitext=ny.content[:1000]

# Fractionner par point
wikimas=wikitext.split('.')

# Jeter le reste après le dernier point
wikimas = wikimas[:-1]

# Créer une variable vide pour le texte
wikitext2 = ''

# Nous parcourons les lignes où il n'y a pas de signe égal (c'est-à-dire tout sauf les titres)
for x in wikimas:
if not('==' in x):

# S'il reste plus de trois caractères dans la chaîne, nous l'ajoutons à notre variable et renvoyons les points perdus lors de la division des chaînes en place
if(len((x.strip()))>3):
wikitext2=wikitext2+x+'.'
else:
break

# Maintenant, à l'aide d'expressions régulières, nous supprimons le balisage
wikitext2=re.sub('\([^()]*\)', '', wikitext2)
wikitext2=re.sub('\([^()]*\)', '', wikitext2)
wikitext2=re.sub('\{[^\{\}]*\}', '', wikitext2)

# Renvoyer une chaîne de texte
return wikitext2

# Gestion de l'exception que le module wikipedia a pu renvoyer lorsqu'il a été demandé
except Exception as e:
return 'L'encyclopédie n'a aucune information à ce sujet.'

# La fonction qui traite la commande /start
@bot.message_handler(commands=["start"])
def start(m, res=False):
bot.send_message(m.chat.id, 'Envoyez-moi n'importe quel mot et je le chercherai sur Wikipedia')

# Recevoir des messages d'un utilisateur
@bot.message_handler(content_types=["text"])
def handle_text(message):
bot.send_message(message.chat.id, getwiki(message.text))

# Lancement du bot
bot.polling(none_stop=True, interval=0)

Terminé, n'oubliez pas de spécifier votre jeton de clé dans le script et de redémarrer le service :

service my-tel-bot restart



Aucun commentaire pour l'instant