Форум сайта python.su
Здравствуйте.
Продолжаю душить изучать змея.
Второй день бьюсь над колбек-отловом.
Объясните на пальцах пжл, почему не срабатывает callback и как отловить текущее состояние приложения для анализа действующих хендлеров.
В main файле регистрирую хендлер :
from app.handlers.find import register_handlers_find async def main(): # Объявление и инициализация объектов бота и диспетчера bot = Bot(token = config.tg_bot.token) # Диспетчер регистрирует функции-обработчики dp = Dispatcher(bot, storage=MemoryStorage()) # Регистрация хэндлеров register_handlers_find(dp) # Запуск поллинга # await dp.skip_updates() # пропуск накопившихся апдейтов (необязательно) await dp.start_polling() if __name__ == '__main__': asyncio.run(main())
from aiogram import Dispatcher, types from aiogram.dispatcher.filters import Text """ Подготовка к поиску """ async def find_text_message(message: types.Message): # Предложить добавить buttons = [ types.InlineKeyboardButton(text="Да", callback_data="add_yes"), types.InlineKeyboardButton(text="Нет", callback_data="add_no"), ] keyboard = types.InlineKeyboardMarkup(row_width = 2) keyboard.add(*buttons) await message.answer("Да или Нет", reply_markup = keyboard) """ Предложение """ async def ask_to_add(call: types.CallbackQuery, message: types.Message): await message.answer("callback for " + call.data) """ Регистрация хендлеров """ def register_handlers_find(dp: Dispatcher): dp.register_message_handler(find_text_message, commands="find") dp.callback_query_handler(lambda c: c.data == Text(startswith="add_"))
ask_to_add
Офлайн
rmnЗадайте вопрос так:
абсолютно никак не отрабатывает. Ни ошибок, ничего.
Даже не знаю как вопрос сформулировать, чтобы отдебажить этот процесс верно.
Офлайн
xam1816Я убрал другие хендлеры, которые отрабатывали. А колбэк - нет. Поэтому на этот вопрос я для себя сразу ответил : В том самом месте вызываю.
Задайте вопрос так:
В каком месте я вызваю корутину ask_to_add?
Офлайн
rmn
dp.callback_query_handler(lambda c: c.data == Text(startswith=“add_”))
dp.register_callback_query_handler(ask_to_add, Text(equals="add_"))
Отредактировано far4ikg (Янв. 26, 2022 21:41:12)
Офлайн