первый код(в него надо запихнуть второй код):
import telebot
from telebot import types # для указание типов
bot = telebot.TeleBot("токен")
@bot.message_handler(commands=['start'])
def start(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("wiki")
btn2 = types.KeyboardButton("❓ Задать вопрос")
markup.add(btn1, btn2)
bot.send_message(message.chat.id, text="Привет, {0.first_name}! Я тестовый бот для твоей статьи для <spoiler title="">habr.com".format(message.from_user), reply_markup=markup)
@bot.message_handler(content_types=['text'])
def func(message):
if(message.text == "wiki"):
bot.send_message(message.chat.id, text="Привеет..Отправьте мне любое слово, и я найду его значение на Wikipedia")
elif(message.text == "❓ Задать вопрос"):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Как меня зовут?")
btn2 = types.KeyboardButton("Что я могу?")
back = types.KeyboardButton("Вернуться в главное меню")
markup.add(btn1, btn2, back)
bot.send_message(message.chat.id, text="Задай мне вопрос", reply_markup=markup)
elif(message.text == "Как меня зовут?"):
bot.send_message(message.chat.id, "У меня нет имени..")
elif message.text == "Что я могу?":
bot.send_message(message.chat.id, text="Поздороваться с читателями")
elif (message.text == "Вернуться в главное меню"):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
button1 = types.KeyboardButton("wiki")
второй код(его нужно запихнуть в кнопку "wiki"):
import telebot, wikipedia, re
# Создаем экземпляр бота
bot = telebot.TeleBot('токен')
# Устанавливаем русский язык в Wikipedia
wikipedia.set_lang("ru")
# Чистим текст статьи в Wikipedia и ограничиваем его тысячей символов
<spoiler title="">def getwiki(s):
try:
ny = wikipedia.page(s)
# Получаем первую тысячу символов
wikitext=ny.content[:1000]
# Разделяем по точкам
wikimas=wikitext.split('.')
# Отбрасываем всЕ после последней точки
wikimas = wikimas[:-1]
# Создаем пустую переменную для текста
wikitext2 = ''
# Проходимся по строкам, где нет знаков «равно» (то есть все, кроме заголовков)
for x in wikimas:
if not('==' in x):
# Если в строке осталось больше трех символов, добавляем ее к нашей переменной и возвращаем утерянные при разделении строк точки на место
if(len((x.strip()))>3):
wikitext2=wikitext2+x+'.'
else:
break
# Теперь при помощи регулярных выражений убираем разметку
wikitext2=re.sub('\([^()]*\)', '', wikitext2)
wikitext2=re.sub('\([^()]*\)', '', wikitext2)
wikitext2=re.sub('\{[^\{\}]*\}', '', wikitext2)
# Возвращаем текстовую строку
return wikitext2
# Обрабатываем исключение, которое мог вернуть модуль wikipedia при запросе
except Exception as e:
return 'В энциклопедии нет информации об этом'