Продолжаю
Второй день бьюсь над колбек-отловом.
Объясните на пальцах пжл, почему не срабатывает 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
Даже не знаю как вопрос сформулировать, чтобы отдебажить этот процесс верно.
Идея была в том, чтобы разделить код на модули, относящиеся к основным командам.