Задать вопрос
@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)
  • Вопрос задан
  • 4850 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    1C-разработчик
    8 месяцев
    Далее
  • Нетология
    Python-разработчик с нуля
    6 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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)


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

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

Похожие вопросы
LIAN Москва
от 270 000 до 300 000 ₽
НТЦ ПРОТЕЙ Санкт-Петербург
от 150 000 до 330 000 ₽
Aporia Севастополь
До 150 000 ₽