@maqstein
Python developer

Как импортировать хэндлеры из разных файлов?

я не хочу чтобы хэндлеры в моем боте находились в одном файле так как это мешает читаемости кода и архитектуре
условно у меня такая иерархия
5d73939ba27a5377683327.png
вот мейна
from mess import *
from aiogram.utils import executor
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.redis import RedisStorage2

bot = Bot(token)
storage = RedisStorage2()
dp = Dispatcher(bot, storage=storage)

@dp.message_handler(commands=['start'])
async def p(m: types.Message):
    await bot.send_message(m.chat.id, 'hello')

executor.start_polling(dp)

вот код mess
import sys
sys.path.append("..")
from main import dp,types
@dp.message_handler(commands=['stop'])
async def p(m: types.Message):
    await bot.send_message(m.chat.id, 'goodbye!')

при запуске бота ошибок не происходит , но в самом телеграме работает только команда для старта
я нашел на гитхабе этот репозиторий, https://github.com/PavlMais/wrapper_for_bot
похоже там решена моя проблема , но там нет файла "hundler" из которого импортируют функцию init
подскажите , как можно реализовать импорт из разных файлов и если укажите на ошибки или лучшие решения чего либо , буду благодарен
  • Вопрос задан
  • 3294 просмотра
Пригласить эксперта
Ответы на вопрос 1
@zxChain
В папке modules создайте файл __init__.py
from .mess import dp

__all__ = ['dp']
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы