Хочу сделать так, чтобы при проверки условия отправлялось сообщение с поздравлением. Когда получаю список через def get_bds - все ок, а когда через def bd_sheduler, ругается
Job "bd_sheduler (trigger: interval[0:00:05], next run at: 2024-04-09 12:40:56 MSK)" raised an exception
Traceback (most recent call last):
File "C:\Education\BDnotification\venv\Lib\site-packages\apscheduler\executors\base_py3.py", line 30, in run_coroutine_job
retval = await job.func(*job.args, **job.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Education\BDnotification\handlers\admin_private.py", line 51, in bd_sheduler
for bd in await orm_get_birthdays(session):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Education\BDnotification\database\orm_query.py", line 20, in orm_get_birthdays
result = await session.execute(query)
^^^^^^^^^^^^^^^^^^^^^^
TypeError: AsyncSession.execute() missing 1 required positional argument: 'statement'
Пример кода
@admin_router.message(F.text == 'Список контактов')
async def get_bds(message: types.Message, session: AsyncSession):
result = ''
for bd in await orm_get_birthdays(session):
result += f'Имя: {bd.name}\nДень рождения: {bd.birthday}\n--------------------------\n'
# await message.answer(f'Имя: {bd.name}\nДень рождения: {bd.birthday}')
await message.answer(result)
await message.answer("Что хотите сделать?", reply_markup=ADMIN_KB)
async def bd_sheduler(message: types.Message, session: AsyncSession):
today = (datetime.date.today().strftime('%d-%m'))
for bd in await orm_get_birthdays(session):
if today == bd.birthday.strftime('%d-%m'):
await message.answer(f"Сегодня день рождение у {bd.name}")
print("бяка")
#----------
async def orm_get_birthdays(session: AsyncSession):
query = select(Birthday)
result = await session.execute(query)
return result.scalars().all()
#-------
async def main():
dp.startup.register(on_startup)
dp.shutdown.register(on_shutdown)
scheduler = AsyncIOScheduler(timezone="Europe/Moscow")
scheduler.add_job(bd_sheduler, trigger='interval', seconds=5,
kwargs={"message": types.Message, 'session': AsyncSession})
scheduler.start()
dp.update.middleware(DataBaseSession(session_pool=session_maker))