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('')
# 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