@GolosB
ИТшник

Что сделать, чтобы bot ловил handler в отдельном файле?

Добавил в проект файл my_menu.py . Bot не отрабатывает хендлеры в этом файле

Скриншоты фрагментов кода удалены модератором.

users\__init__.py
from .start import dp
from .admin_menu import dp
from .web_app_test import dp
from .register import dp
from .helpers import dp
from .my_menu import dp
__all__ = ['dp']

handles\__init__.py
from .errors import dp
from .users import dp
__all__ = ['dp']
  • Вопрос задан
  • 245 просмотров
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
Зачем импортировать dp из всех файлов без разбору? В реальности будет импортирован последний, остальные будут импортированы впустую. Потому что следующий from импортирует другой dp и по имени dp будет доступен уже другой объект из другого модуля.

Объект dp надо создать один раз в одном месте. В принципе, можно потом его потенциально импортировать куда угодно.

Если хочется некоторой модульной структуры, то можно сделать в каждом модуле функцию навроде register_all_handlers(dp) и в ней делать https://docs.aiogram.dev/en/latest/dispatcher/inde.... Соответственно, после импорта всех модулей с хендлерами можно вызвать эту функцию от всех модулей:

Примерно так
import menu_commands
import admin_commands
import message_handlers

dp = создаём_свой_Dispatcher

menu_commands.register_all_handlers(dp)
admin_commands.register_all_handlers(dp)
message_handlers.register_all_handlers(dp)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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