Как обработать несколько колбеков в одном хендлере?
Мне нужно выловить все четыре колбека в хендлер, я пытался использовать F.data in callbacks, где callbacks - лист с колбеками, которые прописываешь сам, но это выдало ошибку.
Как примерно выглядит код:
import asyncio
from aiogram import F, Bot, Dispatcher, types
from aiogram.filters import CommandStart
from config import token
bot = Bot(token)
dp = Dispatcher()
kb = types.InlineKeyboardMarkup(
inline_keyboard=[
[types.InlineKeyboardButton(text='Кнопка', callback_data='1'),
types.InlineKeyboardButton(text='Кнопка', callback_data='2'),
types.InlineKeyboardButton(text='Кнопка', callback_data='3'),
types.InlineKeyboardButton(text='Кнопка', callback_data='4')]
]
)
@dp.message(CommandStart())
async def start(message: types.Message) -> None:
await message.answer(text='Жми', reply_markup=kb)
@dp.callback_query(F.data == 'Нужно обработать все четверо колбека')
async def alert(callback: types.CallbackQuery) -> None:
await callback.answer(text=callback.data, show_alert=True)
async def main():
await bot.delete_webhook(drop_pending_updates=True)
await dp.start_polling(bot)
if __name__ == '__main__':
asyncio.run(main())
Ответы (1 шт):
Автор решения: Serviswriter
→ Ссылка
Не знаю насколько это верное решение, но решил использовать лямбда функцию:
@dp.callback_query(lambda callback: callback.data in callbacks)
async def alert(callback: types.CallbackQuery) -> None:
await callback.answer(text=callback.data, show_alert=True)