@ksiim

Как настроить универсальный хендлер в аиограм?

У меня есть база данных, записи в которую добавляются из самого бота. Далее из записей генерируются inline кнопки. Мне нужно каким-то образом сделать хэндлер, который бы улавливал и обрабатывал по одному образцу все callback_data из кнопок, которые генерируются из бд. Проблема в том, что нужно это сделать так, чтобы хэндлер улавливал и новые записи из бд, и переставал ловить те, которых уже нет. Примерно должно быть что-то такое:
@dp.callback_query_handler(text='??')
async def universal_for_buttons(callback: CallbackQuery):
    await callback.message.edit_text(f'*text*')
    await callback.message.edit_reply_markup(category(та, на которую сработал хэндлер)_keyboard)
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Вместо text в callback_query_handler() укажи функцию, которая принимает CallbackQuery и возвращает True, если надо обработать данный запрос, и False, если нужно поискать другой обработчик. Для ускорения можешь все коды запросов в БД пометить отдельным префиксом (например, пусть они начинаются с "db_"), чтобы сразу отсечь посторонние коды.
Просто погугли callback_query_handler, увидишь что-то типа lambda callback_query: True - это означает "принимать любые коды запроса". Но ведь можно True возвращать не всегда.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы