Не знаю насчёт встроенных возможностей, но ты можешь просто присвоить значение: db.bot.session = BaseSession Только у бота есть значение bot._session, поэтому так лучше не делать Можешь также добавить хранилище и в него записывать: db.bot.my_storage = {} db.bot.my_storage[‘session’] = BaseSession()
Спасибо, попробую
dp.start_polling(bot, key=value) Просто при старте поллинга можно передать
¯\_(ツ)_/¯
А получать как?) Только в dp?
async def handler(message, key)
А, нихуя, спасибо
Я вот таким образом открываю сессию: class MakeSession: def __init__(self) -> None: self._session: Optional[aiohttp.ClientSession] = None async def get_session(self) -> aiohttp.ClientSession: if self._session is None: new_session = aiohttp.ClientSession() self._session = new_session return self._session async def close(self) -> None: if self._session is None: return None await self._session.close() И при выключении бота нужно её закрывать, куда можно поместить выключение?)
В finnaly блок после запуска поллинга
У меня в финалли принт почему то не выводится async def main(): bot = Bot(token=BOT_TOKEN, parse_mode="HTML") main_router = Router() dp = Dispatcher() setup_events(main_router) dp.include_router(main_router) try: await bot.get_updates(offset=-1) await dp.start_polling(bot, allowed_updates=dp.resolve_used_update_types(), MakeSession="12345") finally: print("1111") await bot.session.close()
Ты с пайчарма под виндой запускаешь?
Попробуй в консоли запустить
Тоже самое
Изменил запуск бота на: asyncio.run(main()) А было так: asyncio.get_event_loop().run_until_complete(main()) И заработало
А если мне нужно не из хендлера, а просто из любой функции вызывать?
В фильтрах можно таким же образом получить, в мидлвари из data
async with bot.context(auto_close=True): ...
Это что и куда?)
Это вместо try-finally
Обсуждают сегодня