Возникает неизвестная мне ошибка. Как решить? Aiogram

Рейтинг: 0Ответов: 1Опубликовано: 18.03.2023

Код:

Buttons.py:


from aiogram.types import ReplyKeyboardRemove, \
    ReplyKeyboardMarkup, KeyboardButton, \
    InlineKeyboardMarkup, InlineKeyboardButton

menu = InlineKeyboardButton('🔙Главное меню', callback_data='menu')

menu_button = InlineKeyboardMarkup()
menu_button.add(menu)

Xiaomi = InlineKeyboardButton('Xiaomi', callback_data='xiaomi')
Samsung = InlineKeyboardButton('Samsung', callback_data='samsung')
apple = InlineKeyboardButton('Apple', callback_data='apple')
Honor = InlineKeyboardButton('HONOR', callback_data='honor')
Realme = InlineKeyboardButton('Realme', callback_data='realme')
google = InlineKeyboardButton('Gogle', callback_data='google')

owner = InlineKeyboardMarkup()
owner.add(Xiaomi).add(Samsung).add(apple).add(Honor).add(Realme).add(google)

catalog_btn = InlineKeyboardButton(text='📋 Каталог', callback_data='catalog')   
 
search_btn = InlineKeyboardButton(text='🔎 Поиск по названию', callback_data='search')   

kb_start = InlineKeyboardMarkup()
kb_start.add(catalog_btn).add(search_btn)

main.py:


@dp.message_handler(commands=['start'])
async def start(message: Message):
    await message.answer("📱Привет! я бот, который поможет найти телефон и его характеристики!", reply_markup=start)

Ошибка:


asyncio:Task exception was never retrieved
future: <Task finished name='Task-9' coro=<Dispatcher._process_polling_updates() done, defined at /home/runner/TechObzoo/venv/lib/python3.10/site-packages/aiogram/dispatcher/dispatcher.py:407> exception=BadRequest("Can't parse reply keyboard markup json object")>
Traceback (most recent call last):
  File "/home/runner/TechObzoo/venv/lib/python3.10/site-packages/aiogram/dispatcher/dispatcher.py", line 415, in _process_polling_updates
    for responses in itertools.chain.from_iterable(await self.process_updates(updates, fast)):
  File "/home/runner/TechObzoo/venv/lib/python3.10/site-packages/aiogram/dispatcher/dispatcher.py", line 235, in process_updates
    return await asyncio.gather(*tasks)
  File "/home/runner/TechObzoo/venv/lib/python3.10/site-packages/aiogram/dispatcher/handler.py", line 117, in notify
    response = await handler_obj.handler(*args, **partial_data)
  File "/home/runner/TechObzoo/venv/lib/python3.10/site-packages/aiogram/dispatcher/dispatcher.py", line 256, in process_update
    return await self.message_handlers.notify(update.message)
  File "/home/runner/TechObzoo/venv/lib/python3.10/site-packages/aiogram/dispatcher/handler.py", line 117, in notify
    response = await handler_obj.handler(*args, **partial_data)
  File "main.py", line 40, in start
    await message.answer("📱Привет! я бот, который поможет найти телефон и его характеристики!", reply_markup=start)
  File "/home/runner/TechObzoo/venv/lib/python3.10/site-packages/aiogram/types/message.py", line 438, in answer
    return await self.bot.send_message(
  File "/home/runner/TechObzoo/venv/lib/python3.10/site-packages/aiogram/bot/bot.py", line 346, in send_message
    result = await self.request(api.Methods.SEND_MESSAGE, payload)
  File "/home/runner/TechObzoo/venv/lib/python3.10/site-packages/aiogram/bot/base.py", line 236, in request
    return await api.make_request(await self.get_session(), self.server, self.__token, method, data, files,
  File "/home/runner/TechObzoo/venv/lib/python3.10/site-packages/aiogram/bot/api.py", line 140, in make_request
    return check_result(method, response.content_type, response.status, await response.text())
  File "/home/runner/TechObzoo/venv/lib/python3.10/site-packages/aiogram/bot/api.py", line 115, in check_result
    exceptions.BadRequest.detect(description)
  File "/home/runner/TechObzoo/venv/lib/python3.10/site-packages/aiogram/utils/exceptions.py", line 141, in detect
    raise cls(description)
aiogram.utils.exceptions.BadRequest: Can't parse reply keyboard markup json object

Ответы

▲ 0

Ну в общем.

Толком не знаю что написать, потому затягивать не буду. Написал так, как сделал бы для себя.

Файл Button.py:

from aiogram.types import ReplyKeyboardRemove, \
    ReplyKeyboardMarkup, KeyboardButton, \
    InlineKeyboardMarkup, InlineKeyboardButton

menu = InlineKeyboardButton('🔙Главное меню', callback_data='menu')

menu_button = InlineKeyboardMarkup().add(menu)


all_mobiles = [
    InlineKeyboardButton('Xiaomi', callback_data='xiaomi'),
    InlineKeyboardButton('Samsung', callback_data='samsung'),
    InlineKeyboardButton('Apple', callback_data='apple'),
    InlineKeyboardButton('HONOR', callback_data='honor'),
    InlineKeyboardButton('Realme', callback_data='realme'),
    InlineKeyboardButton('Google', callback_data='google')
]

# в InlineKeyboardMarkup() можно указать row_width=4 для того, чтобы в одном ряду было определённое кол-во кнопок
owner = InlineKeyboardMarkup().add(*all_mobiles)

start_buttons = [
    InlineKeyboardButton(text='📋 Каталог', callback_data='catalog'),
    InlineKeyboardButton(text='🔎 Поиск по названию', callback_data='search')
]

kb_start = InlineKeyboardMarkup().add(*start_buttons)

Ну и в файле main.py:

@dp.message_handler(commands=['start'])
async def start(message: types.Message):
    await message.answer("📱Привет! я бот, который поможет найти телефон и его характеристики!",
                         reply_markup=button.kb_start)

Спасибо, пожалуйста, рад быть полезным если помог