Как ждать ответ от пользователя в Telegram боте на Aiogram?
У меня есть вопрос:
Я сделал бота на библиотеке aiogram. Но надо сделать так чтобы когда пользователь нажал на кнопку "Google" то при выборе он должен принимать сообщения и поискать принятые сообщения на Google. А если пользователь нажал на кнопку "Google" то тоже самое только надо искать не в Google а на Wikipedia. Я хотел попробовать сделать с помощью if
но бот ищет в Wikpedia кнопку которую я нажал. А сообщения которое пишу, бот осознает его как кнопку и запрос отклоняется. Я видел ответ на этом форуме "Как ждать ответ от пользователя Aiogram Telegram Bot" Но на ответе было использовано класса и внутри класса хранились класса. Но я понял суть, но не мог применить. Помогите пожалуйста как это сделать 🙏
Вот код:
import logging
from aiogram import Bot, Dispatcher, executor, types
import wikipedia
from aiogram.types import ReplyKeyboardMarkup, ReplyKeyboardRemove, KeyboardButton
API_TOKEN = 'BOT TOKEN HERE'
wikipedia.set_lang('en')
logging.basicConfig(level=logging.INFO)
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
wikipedia = KeyboardButton("🧩 Wikipedia")
google = KeyboardButton("🌏 Google")
reply_keyboard = (resize_keyboard = True, one_time_keyboard = True).add(wikipedia, google)
@dp.message_handler(commands=['start'])
async def echo(message: types.Message):
await message.answer("Welcome to Telegradroid!\nThis bot can do anything. Type /help for more", reply_markup = reply_keyboard)
@dp.message_handler()
async def wiki(message: types.Message):
if message.text == "🧩 Wikipedia":
await message.answer("Current search system: Wikipedia")
try:
await message.answer(wikipedia.summary(message.text))
except:
await message.answer("Resource not found")
elif message.text == "🌏 Google":
await message.answer("Current search system: Google")
else:
await message.answer("Invalid request")
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
Источник: Stack Overflow на русском