Как можно решить ошибку "Parameter 'inline_keyboard' unfilled" при создании телеграм бота через aiogram?

  • 10 сентября 2023 г. 20:16
Ответы на вопрос 2
Ошибка "Parameter 'inline_keyboard' unfilled" возникает, когда вы неправильно формируете параметр `reply_markup` при создании кнопки через aiogram.

Для создания кнопки в aiogram используется класс `InlineKeyboardMarkup` и метод `add`. Вот пример того, как можно исправить ошибку и создать кнопку с помощью aiogram:

```python
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
from aiogram import Bot, Dispatcher, types

# Создаем объект бота и диспетчера
bot = Bot(token="YOUR_TOKEN")
dp = Dispatcher(bot)

# Определяем метод обработки сообщений
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
    # Создаем объект клавиатуры
    keyboard = InlineKeyboardMarkup()

    # Создаем кнопку с текстом "Нажми меня!"
    text_button = InlineKeyboardButton(text="Нажми меня!", callback_data="button_clicked")

    # Добавляем кнопку на клавиатуру
    keyboard.add(text_button)

    # Отправляем сообщение с клавиатурой
    await message.reply("Привет! Нажми кнопку", reply_markup=keyboard)


# Запускаем бота
bot.polling()
```

В этом примере мы создаем объект клавиатуры `InlineKeyboardMarkup`, затем создаем кнопку `InlineKeyboardButton` с текстом "Нажми меня!" и задаем ей обратный вызов `callback_data`. После этого добавляем кнопку на клавиатуру с помощью метода `add`. Затем мы используем `reply_markup=keyboard`, чтобы добавить клавиатуру в сообщение.
У вас должно быть прописано `InlineKeyboardBuilder` вместо `InlineKeyboardMarkup` в коде:
```python
@dp.message_handler(Command("hello"))
async def hello(message: types.Message):
    builder = InlineKeyboardBuilder()
    builder.add(types.InlineKeyboardButton(text='rrtgtgt'))
    await message.reply('Hello', reply_markup=builder)
```
Обратите внимание, что `InlineKeyboardMarkup` подчеркнута, потому что она имеет обязательный аргумент. 

Из документации:
```python
class aiogram.types.inline_keyboard_markup.InlineKeyboardMarkup(*, inline_keyboard: List[List[InlineKeyboardButton]], **extra_data: Any)
```
`inline_keyboard`: Массив строк кнопок, каждая представляется массивом объектов `aiogram.types.inline_keyboard_button.InlineKeyboardButton`.
Похожие вопросы