у меня handlers - это python package, содержащий файлы с хендлерами (каждый написан отдельно (каждый - в отдельном файле), затем в файле _init_.py:
from .start import dp
from .help import dp
from .website import dp
from .text import dp
# Список параметров, которые можно импортировать из users.
__all__ = ['dp']
Это сделано для того, чтобы импортировать DP, содержащий данные все ххендлеров в файл app.py:
async def on_startup(dp):
# Импортирую функцию из ранее созданного файла в директории utils.
# Эта функция будет отправлять всем администраторам бота сообщение о том, что бот запущен и работает.
from utils.notify_admins import on_startup_notify
await on_startup_notify(dp)
from utils.set_bot_commands import set_default_commands
await set_default_commands(dp)
print('Bot is running!')
# Проверяем что записано в __name__, запускаем бота.
# Дабы избежать срабатывания экзекьютора, если модуль не запускается как главный, а импортируется.
if __name__ == '__main__':
from aiogram import executor
from src.telegram.handlers import dp
executor.start_polling(dp, on_startup=on_startup)
Короче - из python-директории handlers у меня импортируется dp, уже содержащий в себе информацию о всех хендлерах. А в каждый файл с хендлером (например, с хендлером для обработки /start - команды) dp - dispatcher импортируется из файла loader.py:
from aiogram import Bot, types, Dispatcher
from src.telegram.data import config
# Переменная с ключом бота.
bot = Bot(token=config.BOT_TOKEN, parse_mode=types.ParseMode.HTML)
# Dispatcher init.
dp = Dispatcher(bot)
Что я хочу сделать:
Чтобы при запуске файла app.py, а конкретно - функции on_startup - объекту Dispatcher с помощью другой функции в другом модуле присваивалось значение connection_pool (вряд ли это вообще возможно реализовать).
Вот так (в файле app.py);
async def on_startup(dp):
# Импортирую функцию из ранее созданного файла в директории utils.
# Эта функция будет отправлять всем администраторам бота сообщение о том, что бот запущен и работает.
from utils.notify_admins import on_startup_notify
await on_startup_notify(dp)
from utils.set_bot_commands import set_default_commands
await set_default_commands(dp)
# Вот новая строчка (и да, я понимаю, что не смогу потом в хендлере использовать результат работы
# функции)
from src.db_tools.connection_pools import create_asyncpg_connection_pool
await create_asyncpg_connection_pool
print('Bot is running!')
# Проверяем что записано в __name__, запускаем бота.
# Дабы избежать срабатывания экзекьютора, если модуль не запускается как главный, а импортируется.
if __name__ == '__main__':
from aiogram import executor
from src.telegram.handlers import dp
executor.start_polling(dp, on_startup=on_startup)
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Это сделано для того, чтобы импортировать DP, содержащий данные все ххендлеров в файл app.py:
Короче - из python-директории handlers у меня импортируется dp, уже содержащий в себе информацию о всех хендлерах. А в каждый файл с хендлером (например, с хендлером для обработки /start - команды) dp - dispatcher импортируется из файла loader.py:
Что я хочу сделать:
Чтобы при запуске файла app.py, а конкретно - функции on_startup - объекту Dispatcher с помощью другой функции в другом модуле присваивалось значение connection_pool (вряд ли это вообще возможно реализовать).
Вот так (в файле app.py);