Задать вопрос
@MalblshProgrammist

Inline aiogram handler не отрабатывает callback_data как исправить?

Запускается бот, отображаются кнопки, щелкаю по одной из инлайн кнопок и ничего не происходит. Подскажите пожалуйста как вывести результат по callback_data полученный при нажатии на кнопку.

from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton, CallbackQuery
from aiogram import F, Router, types

router = Router()        
def get_popular_address_ikb(pop_address) -> InlineKeyboardMarkup:
        buttons_streets = [f"{pop_address['pop1'][1]} {pop_address['pop1'][2]}", f"{pop_address['pop2'][1]} {pop_address['pop2'][2]}", f"{pop_address['pop3'][1]} {pop_address['pop3'][2]}", f"{pop_address['pop4'][1]} {pop_address['pop4'][2]}", f"{pop_address['pop5'][1]} {pop_address['pop5'][2]}", f"{pop_address['pop6'][1]} {pop_address['pop6'][2]}"]
    
        popular_address_ikb = [
            [
                InlineKeyboardButton(text=buttons_streets[0], callback_data='pop1'),
                InlineKeyboardButton(text=buttons_streets[1], callback_data='pop2')
            ],
            [
                InlineKeyboardButton(text=buttons_streets[2], callback_data='pop3'),
                InlineKeyboardButton(text=buttons_streets[3], callback_data='pop4')
            ],
            [
                InlineKeyboardButton(text=buttons_streets[4], callback_data='pop5'),
                InlineKeyboardButton(text=buttons_streets[5], callback_data='pop6')
            ]
        ]
        return InlineKeyboardMarkup(inline_keyboard=popular_address_ikb)
    
    @router.callback_query(F.data.startswith('pop'))
    async def callback_handler(callback_data: CallbackQuery):
        await callback_data.answer()
        print(callback_data.data)
        if callback_data.data.startswith('pop'):
            print(f"Пользователь выбрал адрес {callback_data.data}")
    
    async def callback_handler(callback_data: CallbackQuery):
        await callback_data.answer()
        print(callback_data.data)
        if callback_data.data.startswith('pop'):
            print(f"Пользователь выбрал адрес {callback_data.data}")
    
    router.callback_query.register(callback_handler)
  • Вопрос задан
  • 62 просмотра
Подписаться 1 Средний 2 комментария
Решения вопроса 1
@MalblshProgrammist Автор вопроса
Проблема решена. Router не был зарегистрирован в основном файле
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы