Как сделать так чтобы телеграм бот записывал сообщение пользователя и отправлял его как запрос на сайт wiki через библиотеку wikipedia?
Итак сегодня я столкнулся с проблемой при написании телеграм бота.Идея заключалась в том чтобы ты писал боту запрос а он тебе кидал в текстовом формате краткую статью вики(как я уже написал в заголовке через библиотеку wikipedia) но получилось так что бот отправлял не последнее сообщение как запрос а саму команду которая вызывала всю эту радость(search).
import telebot
from telebot import types, TeleBot
import wikipedia
bot: TeleBot = telebot.TeleBot('BOT TOKEN')
def short(mess):
features = "html.parser"
wikipedia.set_lang("ru")
c = wikipedia.summary(mess, sentences=100)
return c
def search_2(message):
getin = message.text
bot.send_message(message.chat.id, short(getin), parse_mode="html")
@bot.message_handler(commands=['search'])
def search(message):
bot.send_message(message.chat.id, "Что тебя интересует?")
search_2(message)
вот так выглядел код.
Я пробовал:
Обнулять переменную(Возможно я делал это неправильно)
def search(message):
bot.send_message(message.chat.id, "Что тебя интересует?")
getin = message.text
getin = ""
getin = message.text
bot.send_message(message.chat.id, short(getin), parse_mode="html")
Также пробовал выполнять команду search через 2 функции(то есть в функции search я использовал функцию search_2) это последний мой вариант кода который я представил ранее.
И да это первый мой вопрос на этом сайте поэтому не судите строго за корявость оформления этого вопроса)
Ответы (2 шт):
Все правильно, ты ведь передаешь в функцию search-2 , сам текст команды, создай ещё 1 хэндлер который будет принимать текстовое сообщение от пользователя и добавляй текст из этого сообщения.
import wikipedia
import telebot
from telebot import types
bot = telebot.TeleBot('')
@bot.message_handler(commands=['search'])
def search(message: types.Message):
bot.send_message(message.chat.id, 'Что тебя интересует?')
@bot.message_handler(content_types=['text'])
def wiki(message: types.Message):
result = wikipedia.summary(message.text, sentences=5)
bot.send_message(message.chat.id, result)
if __name__ == '__main__':
bot.polling(none_stop=True)