Ваша проблема связана с тем, что вы отправляете сообщение с новой инлайн клавиатурой без использования метода `callback.edit_message_reply_markup()`, что и является причиной того, что кнопки не срабатывают с первого нажатия. Давайте разберем ваш код и объясним, как это исправить.
Когда вы вызываете `callback.message.answer()`, вы отправляете новое сообщение, и предыдущий `callback.query` не обновляется, а значит, инлайн кнопка не будет обрабатываться, если это новое сообщение не привязано к предыдущему `callback_query`.
Вот как вы можете исправить вашу функцию, чтобы использовать редактирование сообщения вместо отправки нового:
```python
@router.callback_query(F.data == 'test1')
async def test_1(callback: CallbackQuery):
await callback.answer('Запрос принят', show_alert=True) # Добавлено show_alert=True для показа уведомления
await callback.message.edit_reply_markup(reply_markup=kb.choose_button) # Изменяем клавиатуру в том же сообщении
```
Теперь функция для обработки нажатия кнопки `up` останется без изменений, но теперь, когда вы нажмете на кнопку, она будет правильно обрабатываться:
```python
@router.callback_query(F.data == 'up')
async def book(callback: CallbackQuery, state: FSMContext):
await callback.answer("Ok")
await callback.message.answer("Успешно")
await state.set_state(States.menu_state)
```
Также, если вы хотите сделать так, чтобы при нажатии на кнопку `up` вы изменяли текущее сообщение с клавиатурой, вы можете использовать `callback.edit_message_text()`:
```python
@router.callback_query(F.data == 'up')
async def book(callback: CallbackQuery, state: FSMContext):
await callback.answer("Ok")
await callback.edit_message_text("Успешно", reply_markup=None) # Удаляем клавиатуру, если это нужно
await state.set_state(States.menu_state)
```
Такой подход позволяет вам избежать проблем с обработкой событий на инлайн-кнопках, и ваши кнопки будут реагировать сразу после нажатия.