Задекорируйте кнопку cancel и вызовите ту же самую функцию что и при команде /cancel
async def cancel(message: types.CallbackQuery | types.Message):
answer = """text"""
markup = keyboard
if isinstance(message, types.Message):
await message.answer(answer, reply_markup=markup)
elif isinstance(message, types.CallbackQuery):
await message.answer(answer, reply_markup=markup)
@dp.callback_query_handler(text='cancel')
async def inline_cancel(call: types.CallbackQuery):
await cancel(call)
@dp.message_handler(command='cancel')
async def message_cancel(message: types.Message):
await cancel(message)
Посмотрите мой код (он никак не связан с Вашим но тут вы найдете ответ)
from aiogram import types, Router
from aiogram.filters import Command, Text
from tgbot.all_txt import start_message
from tgbot.database.db_requests import DbRequests
from tgbot.keyboards.user import menu_keyboard, advert_keyboard, text_buttons
import logging
start_router = Router()
for i in [
Command('start'),
Text(text_buttons[0])
]:
@start_router.message(i)
async def show_menu(message: types.Message, db_requests: DbRequests):
await start(message, db_requests)
async def start(message: types.Message | types.CallbackQuery,
db_requests: DbRequests):
user = await db_requests.get_user(user_id=message.from_user.id)
config_db = await db_requests.get_config()
buttons = await db_requests.get_advert_buttons()
if not user:
user = await db_requests.add_user(
user_id=message.from_user.id,
full_name=message.from_user.full_name,
username=message.from_user.username,
)
logging.info(f'Added user {message.from_user.full_name}')
if user.full_name != message.from_user.full_name \
or user.username != message.from_user.username:
user = await db_requests.update_user(
user_id=message.from_user.id,
update_fields={
"full_name": message.from_user.full_name,
"username": message.from_user.username,
}
)
markup = menu_keyboard(user)
if isinstance(message, types.Message):
await message.answer('💎', reply_markup=advert_keyboard(buttons))
await message.answer_photo(config_db.image_url,
'\n'.join(start_message(user, message)),
reply_markup=markup
)
elif isinstance(message, types.CallbackQuery):
call = message
await call.message.edit_reply_markup(markup)
else:
pass