@Blaid_Bot

Выдает ошибку 'Dispatcher' object has no attribute 'message'. Как исправить?

from aiogram import Bot, Dispatcher, types, executor

bot = Bot(token=Token)
dp = Dispatcher(bot)

@dp.message_handler(commands="start")
async def cmd_start(message: types.Message):
b1 = [
[
types.KeyboardButton(text="Да"),
types.KeyboardButton(text="Нет")
],
]
keyboard = types.ReplyKeyboardMarkup(
keyboard=b1,
resize_keyboard=True,
input_field_placeholder="Выберите действие"
)
await message.answer("У вас есть аккаунт?", reply_markup=keyboard)

@dp.message(lambda message: message.text == "Нет")
async def without_puree(message: types.Message):
await message.reply("Создать аккаунт?")

if __name__ == '__main__':
executor.start_polling(dp)
  • Вопрос задан
  • 4276 просмотров
Пригласить эксперта
Ответы на вопрос 1
TemaSM
@TemaSM
Fullstack, DevOps, InfSec
Ошибка 'Dispatcher' object has no attribute 'message' возникает, потому что в строке
@dp.message(lambda message: message.text == "Нет") вы используете метод .message, который не существует у объекта Dispatcher.

Для исправления ошибки вам нужно заменить строку
@dp.message(lambda message: message.text == "Нет")
на
@dp.message_handler(lambda message: message.text == "Нет")

В итоге, код для обработки сообщений "Да" и "Нет" будет выглядеть так:

@dp.message_handler(commands="start")
async def cmd_start(message: types.Message):
    b1 = [
        [
            types.KeyboardButton(text="Да"),
            types.KeyboardButton(text="Нет")
        ],
    ]
    keyboard = types.ReplyKeyboardMarkup(
        keyboard=b1,
        resize_keyboard=True,
        input_field_placeholder="Выберите действие"
    )
    await message.answer("У вас есть аккаунт?", reply_markup=keyboard)

@dp.message_handler(lambda message: message.text == "Нет")
async def without_puree(message: types.Message):
    await message.reply("Создать аккаунт?")

if __name__ == '__main__':
    executor.start_polling(dp)


Если ответ помог, не забудьте отметить его как решение вашего вопроса.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы