PyWikiBot
/
PyWikiBot.py
44 строки · 2.6 Кб
1import telebot, wikipedia, re
2# Создаем экземпляр бота
3bot = telebot.TeleBot('Здесь впиши токен, полученный от @botfather')
4# Устанавливаем русский язык в Wikipedia
5wikipedia.set_lang("ru")
6# Чистим текст статьи в Wikipedia и ограничиваем его тысячей символов
7def getwiki(s):
8try:
9ny = wikipedia.page(s)
10# Получаем первую тысячу символов
11wikitext=ny.content[:1000]
12# Разделяем по точкам
13wikimas=wikitext.split('.')
14# Отбрасываем всЕ после последней точки
15wikimas = wikimas[:-1]
16# Создаем пустую переменную для текста
17wikitext2 = ''
18# Проходимся по строкам, где нет знаков «равно» (то есть все, кроме заголовков)
19for x in wikimas:
20if not('==' in x):
21# Если в строке осталось больше трех символов, добавляем ее к нашей переменной и возвращаем утерянные при разделении строк точки на место
22if(len((x.strip()))>3):
23wikitext2=wikitext2+x+'.'
24else:
25break
26# Теперь при помощи регулярных выражений убираем разметку
27wikitext2=re.sub('\([^()]*\)', '', wikitext2)
28wikitext2=re.sub('\([^()]*\)', '', wikitext2)
29wikitext2=re.sub('\{[^\{\}]*\}', '', wikitext2)
30# Возвращаем текстовую строку и добавляем ссылку на статью
31return wikitext2 + '\n Ссылка на статью: ' +ny.url
32# Обрабатываем исключение, которое мог вернуть модуль wikipedia при запросе
33except Exception as e:
34return 'В энциклопедии нет информации об этом'
35# Функция, обрабатывающая команду /start
36@bot.message_handler(commands=["start"])
37def start(m, res=False):
38bot.send_message(m.chat.id, 'Отправьте мне любое слово, и я найду его значение на Wikipedia')
39# Получение сообщений от юзера
40@bot.message_handler(content_types=["text"])
41def handle_text(message):
42bot.send_message(message.chat.id, getwiki(message.text))
43# Запускаем бота
44bot.polling(none_stop=True, interval=0)
45