Не работает dp.callback_query_handler

Рейтинг: 0Ответов: 3Опубликовано: 24.07.2023

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

from aiogram import Bot, Dispatcher, executor, types
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton

import PW

API_TOKEN = PW.token

bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)



@dp.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
    button1 = InlineKeyboardButton(text='Yes', callback_data='1')
    button2 = InlineKeyboardButton(text='No', callback_data='2')
    ikb = InlineKeyboardMarkup(row_width=2)
    ikb.add(button1)
    ikb.add(button2)
    await bot.send_message(chat_id=message.chat.id, text='Ready?', reply_markup=ikb)


@dp.callback_query_handler()
async def some_callback_handler(callback_query: types.CallbackQuery):
    print(callback_query)
    if callback_query.data == '1':
        await bot.send_message(chat_id=callback_query.message.chat.id, text='Let\'s start')
    await callback_query.answer(text='Bye')


if __name__ == '__main__':
    executor.start_polling(dispatcher=dp, skip_updates=True)

telegram screen

Ответы

▲ 0Принят

Пересоздал бота в телеграмме все заработало

▲ 0

Предлагаю пойти от простого. Вот вам полностью рабочая и упрощенная реализация вашего кода:

from aiogram import Bot, Dispatcher, executor, types
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton


bot = Bot(token='TOKEN')
dp = Dispatcher(bot)


@dp.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
    button1 = InlineKeyboardButton(text='Yes', callback_data='1')
    button2 = InlineKeyboardButton(text='No', callback_data='2')
    ikb = InlineKeyboardMarkup(row_width=2)
    ikb.add(button1).add(button2)
    await message.answer('Ready?', reply_markup=ikb)


@dp.callback_query_handler(text='1')
async def some_callback_handler(call: types.CallbackQuery):
    await call.message.answer('Let\'s start')


@dp.callback_query_handler(text='2')
async def some_callback_handler(call: types.CallbackQuery):
    await call.message.answer('Bye')


if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)

Если он у вас не будет работать, то нужно искать проблему не там, где вы ее ищите, т.к. и ваш код, как я писал уже - полностью рабочий

▲ 0

В нем заменили await callback_query.answer(text='Bye') -> await call.message.answer('Bye') Код полностью исправен тот что в ответах