Не сработает хендлер при импорте

друзья, подскажите плз что я делаю не так, есть ситуация:

  • Хендлер замечательно работает если поместить сам код в файл bot.py
  • Но он не хочет работать когда я ровно этот же код импортирую из файла handlers/all_action.py

Структура проекта:

Aggregator/
|
   |— handlers/
|   |—— __init__.py
|   |—— all_action.py
|— bot.py
|— config.py

Cодержание файла handlers/init.py

from . import all_action

Cодержание файла handlers/all_action.py

from aiogram import types
from Agregator.bot import dp
from Agregator import config


@dp.message_handler(commands = "start")
async def first_step(message: types.Message):

    first_step_message = (
        "test")
    await message.answer(first_step_message)

Cодержание файла bot.py

from aiogram import Dispatcher, Bot, executor, filters, types
from config import BOT_TOKEN
import handlers

bot = Bot(BOT_TOKEN, parse_mode="Html")
dp = Dispatcher(bot)
executor.start_polling(dp, skip_updates=True)

Заранее благодарен за помощь!


Ответы (1 шт):

Автор решения: ilya ovchinnikov

Ошибка была в том, что хедлеры иницициализировались при ипморте раньше, черз dp (Dispatcher), объект за счет которого мы и обрабатываем эти хенедлеры.

Решение - вынести объект Dispactcher в отдельный файл disp.py c содержанием ниже:

from aiogram import Dispatcher, Bot
from config import BOT_TOKEN

bot = Bot(BOT_TOKEN, parse_mode="Html")
dp = Dispatcher(bot)

Импортировать его в основной файл bot.py

from aiogram import executor
from config import BOT_TOKEN
import handlers
from disp import dp, bot

executor.start_polling(dp, skip_updates=True)

Dispatcher и хендлеры инициализируются при импорте одновременно, после чего, код заработал. Всем спасибо.

→ Ссылка