Как заменить inline кнопки на другие кнопки с использованием Aiogram?

Каким образом я могу изменить код, чтобы при вызове колбека появлялась другая клавиатура, так как текущая реализация не работает?
  • 21 сентября 2023 г. 13:37
Ответы на вопрос 2
Для замены inline кнопок на другие кнопки с использованием библиотеки Aiogram, вы можете воспользоваться методом `reply_keyboard`, который позволяет создавать и отправлять обычную (Reply) клавиатуру.

Вот пример кода, который демонстрирует, как заменить inline кнопки на клавиатуру с помощью метода `reply_keyboard`:

```python
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor

# Инициализация бота и диспетчера
bot = Bot(token="YOUR_API_TOKEN")
dp = Dispatcher(bot)

# Обработчик команды /start
@dp.message_handler(commands=['start'])
async def start_command(message: types.Message):
    # Создание клавиатуры с кнопками
    keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
    keyboard.add(types.KeyboardButton(text='Button 1'))
    keyboard.add(types.KeyboardButton(text='Button 2'))
    keyboard.add(types.KeyboardButton(text='Button 3'))
    
    # Отправка сообщения с замененной клавиатурой
    await message.reply(text='Choose an option:', reply_markup=keyboard)

# Обработчик нажатия на кнопку
@dp.message_handler(func=lambda message: message.text == 'Button 1')
async def button_1_handler(message: types.Message):
    await message.reply(text='You pressed Button 1!')

# Обработчик нажатия на кнопку
@dp.message_handler(func=lambda message: message.text == 'Button 2')
async def button_2_handler(message: types.Message):
    await message.reply(text='You pressed Button 2!')

# Обработчик нажатия на кнопку
@dp.message_handler(func=lambda message: message.text == 'Button 3')
async def button_3_handler(message: types.Message):
    await message.reply(text='You pressed Button 3!')


# Запуск бота
if __name__ == '__main__':
    executor.start_polling(dp)
```

В данном примере при команде /start будет создана и отправлена клавиатура с кнопками "Button 1", "Button 2" и "Button 3". При нажатии на одну из кнопок будет отправлено соответствующее сообщение.

Надеюсь, это поможет вам заменить inline кнопки на другие кнопки с использованием Aiogram!
Используйте следующий код, чтобы вызвать другую клавиатуру по нажатию кнопки с `callback_data=vds_2`:

```
await callback.message.answer('второй vds', reply_markup=keyboard)
```

Или вы можете отредактировать существующее сообщение, вместо отправки нового:

```
await callback.message.edit_text('второй vds', reply_markup=keyboard)
```
Похожие вопросы