Не сработает хендлер при импорте
друзья, подскажите плз что я делаю не так, есть ситуация:
- Хендлер замечательно работает если поместить сам код в файл 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 и хендлеры инициализируются при импорте одновременно, после чего, код заработал. Всем спасибо.