PyWikiBot

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

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.