Задать вопрос
@Lmn14

AttributeError: 'Dispatcher' object has no attribute 'message_handler'?

from aiogram import Bot,Dispatcher,types
from aiogram.filters import Command, CommandStart
from aiogram.fsm.context import FSMContext
from aiogram.fsm.storage.memory import MemoryStorage
from aiogram.fsm.state import State, StatesGroup
from client.client_db import add_user
from aiogram.types import Message
from data.basic import get_start
from data.settings import settings
from client import client_db
from client.client_db import add_avito, add_username, add_name
import asyncio
import logging

bot = Bot(settings.bots.bot_token, parse_mode='HTML')
dp = Dispatcher()


class user_reg(StatesGroup):
    id = State()
    name = State()
    username = State()
    avito = State()



async def start_bot(bot: Bot):
    await bot.send_message(settings.bots.admin_id, text='Бот запущен')
    client_db.sql_start()

async def stop_bot(bot: Bot):
    await bot.send_message(settings.bots.admin_id, text='Бот остановлен')

async def start():
    logging.basicConfig(
        level=logging.INFO, format='%(asctime)s - %(levelname)s  - %(name)s'
                                   '(%(filename)s).%(funcName)s(%(linemo)d) - %(message)s' 
                        )
    

@dp.message_handler(state=user_reg.username)
async def add_username(message:types.Message, state=FSMContext):
    chat_id=message.chat.id
    await state.finish
    add_username(message)
    await bot.send_message(chat_id, 'Укажите свой профиль авито:')
    await user_reg.avito.set()
    await state.finish()
    add_avito(message)
    await bot.send_message(chat_id, f'Потом добавлю проверку.')

@dp.message_handler(commands=['start'])
async def add_avito(message:types.Message, state=FSMContext):
    chat_id = message.chat.id



@dp.message_handler(commands=['start'])
async def start_msg(message:types.Message, state=FSMContext):
    chat_id = message.chat.id
    add_user(message)
    add_name(message.from_user.first_name)
    await bot.send_message(chat_id, f"Привет, сначала пройди регистрацию")
    await user_reg.username.set()



    
##################### РЕГАЕМ ХЕНДЛЕРЫ #######################
    dp.startup.register(start_bot, add_user())
    dp.shutdown.register(stop_bot )
    dp.message.register(get_start,  Command(commands=['run']))




    try:
        await dp.start_polling(bot)
    finally:
        await bot.session.close()

if __name__ == '__main__':
    asyncio.run(start())


Учусь аиограму 3.х. Даже не подозреваю в чем ошибка, вскод ни на что не жалуется и вроде бы всё правильно написано, списано с видеоурока.
Traceback (most recent call last):
  File "C:\Users\Dell1\Desktop\testproj\main.py", line 41, in <module>
    @dp.message_handler(state=user_reg.username)
     ^^^^^^^^^^^^^^^^^^
AttributeError: 'Dispatcher' object has no attribute 'message_handler'
Для продолжения нажмите любую клавишу . . .
  • Вопрос задан
  • 1590 просмотров
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 1
@rav_pr
Большое желания побыть язвой, ошибка слишком глупая и базовая
Вы в диспетчер не передали объект бота, и хранилище состояния

В связи с этим диспетчер грубо говоря не имеет ничего общего с сущностями которые есть в телеграмме, message, callback. Передав диспетчеру объект боты вы познакомите диспетчер с этими сущностями и ему будет что обрабатывать
Ответ написан
Ваш ответ на вопрос

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

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