Image

(Ultimo cambio: 04.05.2024)

Para probar la funcionalidad del bot WikiPedia Python, usamos servidor de bots de Telegram preconfigurado. Este bot puede responder consultas contenidas en la base de datos de WikiPedia y enviar información en respuesta.

Procedamos con la instalación:

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

Reemplacemos nuestro bot de demostración con el existente:

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

import telebot, wikipedia, re

# Crear una instancia del bot
bot = telebot.TeleBot('Clave recibida de @BotFather')

# Instalar el idioma ruso en Wikipedia
wikipedia.set_lang("ru")

# Limpiamos el texto del artículo en Wikipedia y lo limitamos a mil caracteres
def getwiki(s):
try:
ny = wikipedia.page(s)

# Obtener los primeros mil caracteres
wikitext=ny.content[:1000]

# Dividir por punto
wikimas=wikitext.split('.')

# Descartar todo después del último punto
wikimas = wikimas[:-1]

# Crear una variable vacía para texto
wikitext2 = ''

# Pasamos por las líneas donde no hay signos de igual (es decir, todo menos los encabezados)
for x in wikimas:
if not('==' in x):

# Si quedan más de tres caracteres en la cadena, los agregamos a nuestra variable y devolvemos los puntos perdidos al dividir las cadenas en su lugar
if(len((x.strip()))>3):
wikitext2=wikitext2+x+'.'
else:
break

# Ahora, con la ayuda de expresiones regulares, eliminamos el marcado
wikitext2=re.sub('\([^()]*\)', '', wikitext2)
wikitext2=re.sub('\([^()]*\)', '', wikitext2)
wikitext2=re.sub('\{[^\{\}]*\}', '', wikitext2)

# Devolver una cadena de texto
return wikitext2

# Manejo de la excepción de que el módulo de wikipedia podría haber devuelto cuando se solicitó
except Exception as e:
return 'La enciclopedia no tiene información al respecto.'

# La función que procesa el comando /start
@bot.message_handler(commands=["start"])
def start(m, res=False):
bot.send_message(m.chat.id, 'Envíame cualquier palabra y lo buscaré en Wikipedia.')

# Recibir mensajes de un usuario
@bot.message_handler(content_types=["text"])
def handle_text(message):
bot.send_message(message.chat.id, getwiki(message.text))

# Lanzamiento del bot
bot.polling(none_stop=True, interval=0)

Listo, no olvide especificar su token de clave en el script y reinicie el servicio:

service my-tel-bot restart



Sin comentarios aún