Не могу отловить нажатие inline кнопки аiogram 3
Структура папок:
-bot
--handlers
---key_handlers.py
--keyboard
---keyboard.py
-main.py
main.py
import asyncio
from aiogram import Bot, Dispatcher
from handlers import key_handlers
from lib import constant
async def main():
bot = Bot(token=constant.TOKEN)
dp = Dispatcher()
dp.include_routers(key_handlers.router)
await bot.delete_webhook(drop_pending_updates=True)
await dp.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())
keyboard.py
from aiogram.types import ReplyKeyboardMarkup, InlineKeyboardButton, InlineKeyboardMarkup
def btn():
menu_list = [
[InlineKeyboardButton(text="Кнопка1", callback_data="one_btn")], // к примеру эта кнопка
[InlineKeyboardButton(text="Кнопка2", callback_data="btn2"),
InlineKeyboardButton(text="Кнопка3", callback_data="btn3")],
]
return InlineKeyboardMarkup(inline_keyboard=menu_list)
key_handlers.py
from aiogram import Router
from aiogram.filters import Command
from aiogram.filters.text import Text
from aiogram.types import Message, ReplyKeyboardRemove
from aiogram.types import CallbackQuery
from aiogram.types import ReplyKeyboardMarkup, InlineKeyboardButton, InlineKeyboardMarkup
from keyboard.keyboard import btn, otherBtn
router = Router()
@router.message(Command("start"))
async def cmd_start(message: Message):
await message.answer(
"Текст",
reply_markup=btn()
)
@router.callback_query(Text('one_btn')) // Запрос сюда не попадает
async def callbackTariff(callback: CallbackQuery):
print("adasdasdasdsa")
await callback.answer(
"Текст",
reply_markup=otherBtn()
)
Пробовал через @dp.callback_query, @...(Text(text=["one_btn"]))
так тоже обращался, но все бестолку, в примерах вроде подобное обращение, но все равно не получается.
Написано что callback
улавливает и обрабатывает запрос от нажатой кнопки, важным идентификатором является text либо callback_data
, но все же не понятно почему не получается
Источник: Stack Overflow на русском