WIKIPEDIA-БОТ
Давай научим нашего бота не просто отсылать сообщения обратно, а чему‑нибудь поинтереснее. Например, по введенному слову давать статью на Википедии. Здесь нам поможет модуль Wikipedia:
pipinstallwikipedia
Готовим код.
importtelebot,wikipedia,re
# Создаем экземпляр бота
bot=telebot.TeleBot(‘Здесь впиши токен, полученный от @botfather’)
# Устанавливаем русский язык в Wikipedia
wikipedia.set_lang(«ru»)
# Чистим текст статьи в Wikipedia и ограничиваем его тысячей символов
defgetwiki(s):
try:
ny=wikipedia.page(s)
# Получаем первую тысячу символов
wikitext=ny.content[:1000]
# Разделяем по точкам
wikimas=wikitext.split(‘.’)
# Отбрасываем всЕ после последней точки
wikimas=wikimas[:-1]
# Создаем пустую переменную для текста
wikitext2=»
# Проходимся по строкам, где нет знаков «равно» (то есть все, кроме заголовков)
forxinwikimas:
ifnot(‘==’inx):
# Если в строке осталось больше трех символов, добавляем ее к нашей переменной и возвращаем утерянные при разделении строк точки на место
if(len((x.strip()))>3):
wikitext2=wikitext2+x+’.’
else:
break
# Теперь при помощи регулярных выражений убираем разметку
wikitext2=re.sub(‘\([^()]*\)’,»,wikitext2)
wikitext2=re.sub(‘\([^()]*\)’,»,wikitext2)
wikitext2=re.sub(‘\{[^\{\}]*\}’,»,wikitext2)
# Возвращаем текстовую строку
returnwikitext2
# Обрабатываем исключение, которое мог вернуть модуль wikipedia при запросе
exceptExceptionase:
return’В энциклопедии нет информации об этом’
# Функция, обрабатывающая команду /start
@bot.message_handler(commands=[«start»])
defstart(m,res=False):
bot.send_message(m.chat.id,’Отправьте мне любое слово, и я найду его значение на Wikipedia’)
# Получение сообщений от юзера
@bot.message_handler(content_types=[«text»])
defhandle_text(message):
bot.send_message(message.chat.id,getwiki(message.text))
# Запускаем бота
bot.polling(none_stop=True,interval=0)